R.没有给我一个阵列选项

时间:2011-08-02 16:29:51

标签: java android xml

我是Android开发的新手。我正在尝试让我的string.xml文件添加字符串,而不是在.java文件中对字符串进行硬编码。

我正在使用this 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();
            }
        });

    }
}

这是我的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>

7 个答案:

答案 0 :(得分:3)

转到Project -> Clean然后重建。 R.java没有保存您刚刚添加的资源。编辑:还要确保import YourPackage.ProjectName.R;

答案 1 :(得分:1)

确保您已构建项目。右键单击,构建(或在顶部,Project - &gt; Build All)。

它可能不知道数组,因为你说你刚刚复制和粘贴,因此它没有被注册为有效资源。

答案 2 :(得分:1)

你总是说你把字符串放在string.xml - 文件中。该文件应命名为strings.xml(带有“s” - &gt;字符串 s .xml)。

它接触到它不是madder给出文件的名称,但它需要通过使用<resource> - 元素作为XML文件的根元素来声明为求助文件并且文件必须放在项目的res/values - 文件夹中。

如果追索文件存在问题,亚行应该给出错误消息,告诉您应该修复的内容。在Eclipse中,这显示在“Console”-View中。检查是否有任何错误消息。

您也可以尝试仅使用array代替string-array(这对我来说一直很有用)。

答案 3 :(得分:0)

这应该是这样的: 在strings.xml下的res/values文件中

<?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>

答案 4 :(得分:0)

如果您希望能够使用R.array.countires_array访问它,则需要将其放入     array.xml

由于它存储在string.xml中,因此它将位于R.string.countires_array

答案 5 :(得分:0)

R.id.tv_id尝试之前,您遗失了thissetListAdapter

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

答案 6 :(得分:0)

仅关闭项目并重新打开它对我有用,数组标识符出现在 列表选项。