在实现XML之后,ArrayList无法解析符号

时间:2015-03-01 11:56:06

标签: android

我的问题是我在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);
    }

我想创建一个应用程序,在活动开始时为您提供随机文本。

5 个答案:

答案 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相关的其他依赖性

  1. 你是否有minsdkversion应该是11。
  2. 如果没有,请检查您是否支持库 (android.support.v7.app.ActionBarActivity)这个或没有和设置 Theme.AppCompat或类似主题的活动主题
  3. 将extends更改为Activity类而不是ActionBarActivity     然后请将menu.xml中的行删除为&#34;显示&#34;属性     并在您的活动中注释onCreateOptionsMenu代码的代码     除了这段代码之外的其他课程

    getMenuInflater()。膨胀(R.menu.activity_to_know_your_own_number_main,             菜单);     return true;

  4. 还会删除文件夹名称&#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);
}

我点击按钮,申请人关闭......我不知道是什么错误。