【发布时间】:2016-01-28 12:46:12
【问题描述】:
我想在每次打开我的 android 应用程序时显示随机字符串。使用stackoverflow,我能够编写一个从资源文件中获取随机字符串的java程序。
package com.example.krishna.quotes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.Random;
import android.content.res.Resources;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private String[] myString;
private static final Random rgenerator = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Resources res = getResources();
myString = res.getStringArray(R.array.quotes_array);
String q = myString[rgenerator.nextInt(myString.length)];
TextView tv = (TextView) findViewById(R.id.text);
tv.setText(q);
}
}
当我在活动 xml 文件的文本字段中使用字符串类型时,应用程序的构建没有任何错误。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.krishna.quotes.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string-array/quotes_array"
android:textAlignment="center"
android:textSize="23sp"
android:gravity="center|center_horizontal"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
但由于我不希望每次打开我的应用程序时只显示一个字符串,所以我将所有字符串收集到一个字符串数组中。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array
name="quotes_array">
<item>@string/quote1</item>
<item>@string/quote2</item>
<item>@string/quote3</item>
<item>@string/quote4</item>
<item>@string/quote5</item>
<item>@string/quote6</item>
<item>@string/quote7</item>
<item>@string/quote8</item>
<item>@string/quote9</item>
<item>@string/quote10</item>
<item>@string/quote11</item>
<item>@string/quote12</item>
<item>@string/quote13</item>
<item>@string/quote14</item>
<item>@string/quote15</item>
</string-array>
</resources>
更改活动 xml 文件中的文本字段出现以下错误:
错误:(15, 23) 未找到与给定名称匹配的资源(在“文本”处,值为“@string-array/quotes_array”)。 错误:任务 ':app:processDebugResources' 执行失败。
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/home/krishna/Android/Sdk/build-tools/23.0.2/aapt'' 完成非零退出值 1
问题很可能是字符串数组类型,android studio 无法处理。如何克服这个问题来构建我的第一个 android 应用程序?我很高兴向我的朋友们炫耀我的应用程序,但是这个小错误正在阻碍我。谢谢您的帮助。请不要叫我菜鸟
【问题讨论】:
-
我认为需要使用
android:text="@array/quotes_array"
标签: java android arrays xml string