Java R.没有给我数组的选项

Java R.没有给我数组的选项,java,android,xml,Java,Android,Xml,我是android开发新手。我试图让我的string.xml文件添加字符串,而不是在.java文件中硬编码字符串 我正在使用android开发者教程,复制并粘贴代码以确保没有打字错误 我遇到的问题是,当我输入R时,array不会显示为选项。我真的不确定出了什么问题。下面是Java代码。我在给我带来麻烦的行旁边放了一个/: import android.app.ListActivity; import android.os.Bundle; import android.view.View; imp

我是android开发新手。我试图让我的
string.xml
文件添加字符串,而不是在
.java
文件中硬编码字符串

我正在使用android开发者教程,复制并粘贴代码以确保没有打字错误

我遇到的问题是,当我输入
R时,array
不会显示为选项。我真的不确定出了什么问题。下面是Java代码。我在给我带来麻烦的行旁边放了一个
/

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class HelloListActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] countries = getResources().getStringArray(R.array.countries_array);
        //The R. does not offer array as an option
        setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, countries));

        ListView lv =getListView();
        lv.setTextFilterEnabled(true);

        lv.setOnItemClickListener(new OnItemClickListener(){
            public void onItemClick(AdapterView<?>parent, View view,
                    int posistion, long id){

            Toast.makeText(getApplicationContext(), ((TextView)view).getText(),
                    Toast.LENGTH_SHORT).show();
            }
        });

    }
}

确保你已经完成了这个项目。右键单击build(或在顶部,Project->build All)


它可能还不知道该数组,因为您说您刚刚复制并粘贴了它,因此它没有注册为有效的资源。

转到
Project->Clean
,然后重新生成。java没有保存您刚才添加的资源。编辑:还要确保
导入您的package.ProjectName.R

您总是说您将字符串放入
string.xml
-文件中。该文件应命名为
strings.xml
(带有一个“s”->字符串s.xml)

它不需要指定文件的名称,但需要通过使用
-元素作为XML文件的根元素将其声明为追索权文件,并且必须将该文件放置在项目中的
res/values
-文件夹中

如果追索权文件有问题,亚洲开发银行应给出错误消息,告诉您应该修复什么。在Eclipse中,这将显示在“控制台”视图中。检查是否在那里收到任何错误消息


您也可以尝试只使用
数组
而不使用
字符串数组
(这对我来说一直有效)。

这就是它的外观: 在
res/values
下的
strings.xml
文件中:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="countries_array">
    <item>Bahrain</item>
    <item>Bangladesh</item>
    <item>Barbados</item>
    <item>Belarus</item>
    <item>Belgium</item>
    <item>Belize</item>
    <item>Benin</item>
</string-array>
</resources>

巴林
孟加拉国
巴巴多斯
白俄罗斯
比利时
伯利兹
贝宁

如果您想使用R.array.countires\u array访问它,需要将其放入 array.xml


由于它存储在string.xml中,因此它将位于R.string.countires_数组下

您缺少
R.id.tv_id
,请在
setListAdapter
之前尝试:

this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,  R.id.label, countries));
ListView lv =getListView();
//lv.setTextFilterEnabled(true);
this.setListAdapter(新的ArrayAdapter(this,R.layout.list_项,R.id.label,countries));
ListView lv=getListView();
//lv.setTextFilterEnabled(真);

关闭并重新打开项目对我来说很有效,数组标识符出现在
列出选项。

每次在项目中保存文件时(如果您使用的是Eclipse),都会重新创建
R.java
文件。请确保顶部没有幻影android.R(尽管我怀疑您会有更多的错误)。再做一个测试:在gen(而不是src)文件夹下,打开R.java。在
public static final class array
下是否显示了countries\u数组?另外:当您将其保留为R.array.countries\u数组时,会出现什么错误?谢谢,但是现在,countries\u数组不作为选项出现。我尝试了清理,然后再次重建,但没有成功尝试将strings.xml中的内容放入arrays.xml中,顺便说一下,它是
strings.xml
而不是
string.xml
。这就是为什么它没有显示任何内容。不管他在什么文件中声明了它。R仍然会将其编译为R.array资源。是的,但您使用的是
string.xml
而不是
strings.xml
,Android不承认这一点。为了澄清一下,它是字符串还是字符串有关系吗?我只是制作了一个新的xml文件,标记为“asdf.xml”,放置了一个
,然后我仍然可以通过请求R.array.test来找到它。你说得对,它并不疯狂(也只是找到了它)。但是您必须使用
追索
-标记声明它,并且文件的开头和XML文件必须放在
res/values
-文件夹中。情况并非如此。请参阅Lukas Knuth答案的第一部分。this.setListAdapter(新的ArrayAdapter(this,R.layout.list_项,R.id.label,countries));在setListAdapter和list_item.xml中TextView的id(R.id.label)之前使用此选项。我在这个问题上花了很多时间+1对于老年人,请将其关闭,然后重新打开。它起作用了。项目清理和重建对我来说不起作用,但这个答案起作用了!有点奇怪…对我有效的事情就是改变JDK。删除导入R对我有效。
this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,  R.id.label, countries));
ListView lv =getListView();
//lv.setTextFilterEnabled(true);