安卓 R.字符串. 检索值



我正在练习我的Java,我正在尝试制作一些类似简单文本游戏的东西。现在有两个主要角色,每个角色都有自己的弹出文本。 我已经将文本放在字符串中.xml具有自己的名称,例如"dialog1"dialog2"dialog3",我想使用 R.string.dialog* 检索字符串,但我想制作一些函数来更改数字,例如"对话框"+ int

怎么做这样的东西??

我让它就像如果你点击屏幕,当你点击第二次时,它显示的"对话框1"按摩,另一个角色应该显示下一部分"dialog2"。现在我不想手动做 r.string.dialog1 然后 r.string.dialog2 我想让它发挥作用,但我不知道如何传递值"dialog" + int。

您可以在 xml 中放置一个参数,如这篇文章中所述 字符串中的参数.xml可能吗?

您需要在字符串资源中的任何位置添加 %1$d,以便当您想要获取字符串时,您发送参数。

<string name="dialog1"> This is %1$d</string>

当你想得到它时

getString(R.string.dialog1, "1")

如果需要更多参数,请更改参数编号

<string name="parameters"> Many parameters %1$d %2$d %3$d</string>

然后

getString(R.string.parameters, "1", "2", "3")

如果需要设置字符串的格式,则可以通过将格式参数放在字符串资源中来实现,如以下示例资源所示。

<string name="welcome_messages">Hello, %1$s! You have %2$d new messages.</string>

在此示例中,格式字符串有两个参数:%1$s 是字符串,%2$d 是十进制数。然后,通过调用 getString(int, Object...( 来格式化字符串。例如:

String text = getString(R.string.welcome_messages, username, mailCount);

引自:安卓文档

如果你想要一个方法来加载存储在strings.xml中的值,你必须创建一个包含资源 id 的整数数组。

例:

将消息创建到strings.xml

<resources>
...
...
<string name="dialog1">My first message</string>
<string name="dialog2">My second message</string>
<string name="dialog3">My third message</string>
</resources>

然后使用此方法根据数组中定义的元素的索引加载值:

int[] messageValues = new int[] {R.string.dialog1,R.string.dialog2,R.string.dialog3};
private String getDialogMessage(Context context, int dialogIndex){
if(dialogIndex >= messageValues.length) //Check if element exist in array
return "";
return  context.getResources().getString(messageValues[dialogIndex]);
}

这些是如何使用该方法的示例:

System.out.println(getDialogMessage(getApplicationContext() , 0)); //get first element message.
System.out.println(getDialogMessage(getApplicationContext() , 1)); //get second element message.
System.out.println(getDialogMessage(getApplicationContext() , 2)); //get third element message.
System.out.println(getDialogMessage(getApplicationContext() , 14)); //returns "" , because the element doesnt exist into the array..

最新更新