我的问题是我在arrays.xml中声明了我的数组名称,但是Android Studio仍然无法识别它,并且为数组名称提供了红色,这里是代码。
arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="myArray">
<item name="yes">Yes</item>
<item name="no">No</item>
<item name="maybe">maybe</item>
<item name="good">good</item>
</string-array>
</resources>
在我的主要活动中,R.array.myArray给了我&#34;无法解析符号&#34; myArray&#34; &#34;,该怎么办?我重新同步了我的项目,重新加载了它,并重新启动了我的comp,甚至清除了缓存,但是Android Studio仍然没有识别它,我试图将它手动添加为arrays.xml,并且还使用alt + enter。
public class MainActivity3 extends ActionBarActivity {
private String[] myString;
private static final Random rgenerator = new Random();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity3);
Resources res = getResources();
myString = res.getStringArray(R.array.myArray);
String q = myString[rgenerator.nextInt(myString.length)];
TextView tv = (TextView) findViewById(R.id.textView2);
tv.setText(q);
}
我想创建一个应用程序,在活动开始时为您提供随机文本。
答案 0 :(得分:3)
Resources res = getResources();
myString = res.getStringArray(R.array.myArray);
String q = myString[rgenerator.nextInt(myString.length)];
这是正确的代码。
请检查您保存的arrays.xml文件。 如果你保留在值文件夹中,那么就不会出现问题,它会起作用。
或者您可以将arrays.xml的代码(即myArray的声明和初始化,因为它是复制粘贴它)放入string.xml中,它位于值文件夹中,它将解决您的问题。
根据您的代码,您已经扩展了ActionBarActivity
public class MainActivity3 extends ActionBarActivity
所以请检查与此ActionBarActivity相关的其他依赖性
将extends更改为Activity类而不是ActionBarActivity 然后请将menu.xml中的行删除为&#34;显示&#34;属性 并在您的活动中注释onCreateOptionsMenu代码的代码 除了这段代码之外的其他课程
getMenuInflater()。膨胀(R.menu.activity_to_know_your_own_number_main, 菜单); return true;
还会删除文件夹名称&#34; crunch&#34; in&#34; res&#34;文件夹也来自bin文件夹并清理项目完成
答案 1 :(得分:2)
public class MainActivity2 extends Activity {
private String[] myString;
private static final Random rgenerator = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2);
Resources res = getResources();
myString = res.getStringArray(R.array.myArray);
String q = myString[rgenerator.nextInt(myString.length)];
TextView tv = (TextView) findViewById(R.id.text1);
tv.setText(q);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main_activity2, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
这段代码很好,它会运行一次,只有当你运行应用程序时,它会从myArray中设置text1或tv一次,它会显示你在应用程序中设置为text1或tv的随机值....因为你已经在oncreate()函数中编写了代码,该函数只会在活动的生命周期中调用一次。
或者wana在tv或button上使用setOnClickListener,所以当你点击它时它会改变它的文本。在编写此代码之前,请将tv的声明更改为类变量或更改前面的最终关键字 并在tv.setText(q)下面添加此代码;
tv.setText("click me please");
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String q = myString[rgenerator.nextInt(myString.length)];
testtv.setText(q);
}
});
答案 2 :(得分:0)
应为myString = res.getStringArray(R.arrays.myArray);
答案 3 :(得分:0)
首先,您能否告诉您存储XML文件的位置?
其次,我认为你应该删除数组中每个项目的name属性。
答案 4 :(得分:0)
public void ButtonOnClick1 (View v) {
TextView tv = (TextView) findViewById(R.id.text1);
String q = myString[rgenerator.nextInt(myString.length)];
tv.setText(q);
}
我点击按钮,申请人关闭......我不知道是什么错误。