如何直接将XML中的字符串放入java数组中

时间:2016-12-11 19:19:08

标签: java android arrays xml string

我有一项活动,我开始。它有一个数组,我想包含我的strings.xml中的字符串。此外,我有一个按钮,单击时将TextView的文本更改为数组中的下一个元素。所以我想在每次单击按钮后在TextView中更改文本。文本来自数组。但是我无法使用代码从string.xml获取数组:

getString(R.string.word_1)

我的strings.xml如下所示:

<resources>
<string name="app_name">Name</string>
<string name="word_1">First</string>
</resources>

此Array所在的活动具有以下代码:

public class DisplayMenuActivity extends AppCompatActivity {

Button nextButton;
TextView word;

public String list[] = {getString(R.string.word_1)};
private int listNumber = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_menu);



    //Word
    word = (TextView) findViewById(R.id.word);
    word.setText(list[0]);

    //Button
    nextButton = (Button) findViewById(R.id.nextButton);
    nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            listNumber++;
            if (listNumber >= list.length) {
                listNumber = 0;
            }
            word.setText(list[listNumber]);
        }
    });
}}

当我用&#34; First&#34;替换getString(R.string.word_1)时,它确实有效。例如,但我想调用XML文件中的单词而不是硬代码。所以问题在于从XML调用String并且我已经在互联网上寻找解决方案,但它们都不起作用。任何人都知道我做错了什么?谢谢你看看谁在寻找。我很感激。

2 个答案:

答案 0 :(得分:1)

您正在寻找string-array,您可以访问resources内或之后的onCreate

保存在res / values / strings.xml的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
    </string-array>
</resources>

此应用程序代码检索字符串数组:

Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array)

来源:https://developer.android.com/guide/topics/resources/string-resource.html

答案 1 :(得分:0)

你可以这样做:

public class DisplayMenuActivity extends AppCompatActivity {

Button nextButton;
TextView word;

public int[] list = {R.string.word_1};
private int listNumber = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_menu);



    //Word
    word = (TextView) findViewById(R.id.word);
    word.setText(list[0]);

    //Button
    nextButton = (Button) findViewById(R.id.nextButton);
    nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            listNumber++;
            if (listNumber >= list.length) {
                listNumber = 0;
            }
            word.setText(list[listNumber]);
        }
    });
}}

这是有效的,因为TextView.setText()可以将int作为参数,只要它是一个字符串资源。