Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android XML资源文件中存储字符串并引用它们_Android_Xml - Fatal编程技术网

在android XML资源文件中存储字符串并引用它们

在android XML资源文件中存储字符串并引用它们,android,xml,Android,Xml,我想知道我是否应该使用资源XML文件来存储所有可能的配方,而不是使用硬编码的ArrayList,问题是我不知道如何使用我已有的方法从资源文件调用 以下是我想要的精简版本: int recipeNumber = b.getInt("RECIPE"); //This is taken from another activity final TextView rowTextView = new TextView(this); //Create a textview rowTextV

我想知道我是否应该使用资源XML文件来存储所有可能的配方,而不是使用硬编码的ArrayList,问题是我不知道如何使用我已有的方法从资源文件调用

以下是我想要的精简版本:

int recipeNumber = b.getInt("RECIPE"); //This is taken from another activity

    final TextView rowTextView = new TextView(this); //Create a textview

    rowTextView.setText(R.string.recipeNumber); //This is what i am struggling with  

    howToLinearLayout.addView(rowTextView); //Add textview to linearlayout
我不知道引用我的资源文件的部分应该放什么。我知道我需要: rowTextView.setText(R),但我不确定接下来会发生什么

Im存储字符串,例如:

<string name="1">One part Vodka, One part Coke</string>
<string name="2">One part Vodka, One part Lemonade</string>
一份伏特加,一份可乐
一份伏特加,一份柠檬水
这个列表会很长,所以我非常感谢关于存储的任何其他建议,请记住我对这个很陌生

recipeNumber int是将在textview中调用的字符串


感谢您的帮助

要在代码中获取字符串资源,请使用getResources()


要获取未知的资源标识符,但要获取已知的资源名称,可以使用以下方法

int identifier = getResources().getIdentifier("" + recipeNumber, "string", "com.your.package.name");
rowTextView.setText(getResources().getString(identifier));

我建议将值存储在代码之外,例如XML或JSON(更快、更容易使用)。我会使用JSON。将列表加载到数组或其他集合中,并以任何方式使用它都非常容易

然后,你可以维护你的食谱,添加新的,维护它等等,而不必接触代码。只需替换XML或JSON(或任何你选择的)并重建你的应用程序


Strings.xml用于用户界面和代码中的文本片段,您可能希望对其进行本地化,并避免硬编码字符串。它并非真正用于存储数据。

在我的代码中它仍然无法识别RecipeEnumber部分-它是一个变量,因此我有什么方法可以引用它吗?您可以获取所需资源的标识符知道的名称。请参阅编辑。
int identifier = getResources().getIdentifier("" + recipeNumber, "string", "com.your.package.name");
rowTextView.setText(getResources().getString(identifier));