我是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>
答案 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
尝试之前,您遗失了this
和setListAdapter
:
this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, countries));
ListView lv =getListView();
//lv.setTextFilterEnabled(true);
答案 6 :(得分:0)
仅关闭项目并重新打开它对我有用,数组标识符出现在 列表选项。