Android:使用变量名访问string.xml

Android:使用变量名访问string.xml,第1张

概述我想根据从程序的其他部分收到的提示向用户显示消息.可以有许多提示&它们存储在枚举中.这些是我的提示:Defs.javapublicenumPrompt{PromptA,PromptB,PromptC,}我将外化字符串存储在这些行的资源中:RES/值/strings.xml中<stringname="PromptA">Errori

我想根据从程序的其他部分收到的提示向用户显示消息.可以有许多提示&它们存储在枚举中.

这些是我的提示:

Defs.java

public enum Prompt{    PromptA,    PromptB,    PromptC,}@H_301_11@

我将外化字符串存储在这些行的资源中:

RES /值/ strings.xml中

<string name="PromptA">Error in execution</string><string name="PromptB">Process completed successfully</string><string name="PromptC">Please try again</string>@H_301_11@

现在在我的主Activity屏幕中,一个方法被其他部分调用:

public voID showPrompt(Prompt prompt) {    String message = getString(R.string.<**what-do-I-put-here?**>);    //show a dialog Box with message}@H_301_11@

我知道这可以通过一个巨大的if-else块(实际应用程序中有大量提示)或switch语句来完成.
这真的很难看.

有一个更好的方法吗?

解决方法:

请参见Resources.getIDentifIEr:http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String,%20java.lang.String%29.你可以尝试这样的事情:

public voID showPrompt(Prompt prompt, String label) {    String message = (String) getResources().getText(getResources().getIDentifIEr(label, "string", null));    //show a dialog Box with message}@H_301_11@

尝试一下,看看它为你做了什么.

编辑:嗯.试试这个.

public voID showPrompt(Prompt prompt, String label) {    String message = (String) getResources().getText(getResources().getIDentifIEr(label, "string", "<application package class>"));    //show a dialog Box with message}@H_301_11@

事实证明你必须指定你的包标识符(所以如果你的AndroIDManifest.xml有com.blah.blah.blah作为Package将它放在第三个参数中.

总结

以上是内存溢出为你收集整理的Android:使用变量名访问string.xml全部内容,希望文章能够帮你解决Android:使用变量名访问string.xml所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1098593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存