Java R.没有给我数组的选项
我是android开发新手。我试图让我的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
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);