如何从android中的string.xml读取值?

UMA*_*MAR 354 string layout android

我写了这句话:

String Mess = R.string.mess_1 ;
Run Code Online (Sandbox Code Playgroud)

获取字符串值,但它不是返回字符串,而是给我类型为整数的id.我怎样才能得到它的字符串值?我在string.xml文件中提到了字符串值.

cch*_*son 779

试试这个

String mess = getResources().getString(R.string.mess_1);
Run Code Online (Sandbox Code Playgroud)

UPDATE

String string = getString(R.string.hello);
Run Code Online (Sandbox Code Playgroud)

您可以使用getString(int)getText(int)检索字符串.getText(int)将保留应用于字符串的任何富文本样式.

参考:https://developer.android.com/guide/topics/resources/string-resource.html

  • 你可以将它简化为`this.getString(R.string.some_id)`,如果你已经在`Context`(Activity或Service)中. (86认同)
  • 您可以进一步简化getString(R.string.some_id).如果你想自定义字符串,你可以使字符串像"欢迎,%1 $ s",然后你可以使用getString(R.string.some_id,"John Doe").在运行时获得"欢迎,John Doe". (9认同)

Hak*_*kan 61

在活动中:

this.getString(R.string.resource_name)
Run Code Online (Sandbox Code Playgroud)

如果不在活动中但可以访问上下文:

context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
Run Code Online (Sandbox Code Playgroud)

  • 在活动期间,您不必包含`this`。只需`getString()`就可以让您做事。 (2认同)

Rob*_*kis 42

我正在使用这个:

String URL = Resources.getSystem().getString(R.string.mess_1);
Run Code Online (Sandbox Code Playgroud)

  • 警告 - 根据[这个答案](http://stackoverflow.com/a/8864116/3836051)引用android的文档,使用`Resources.getSystem()`不会给你应用程序资源,但只有android的.它不应该用于像`string`这样的资源.我使用了这个解决方案并且应用程序崩溃了,抛出一个难以理解的"notfoundexception"(因为资源存在于`strings.xml`中). (8认同)

oab*_*rca 21

顺便说一句,也可以在strings.xml中创建字符串数组,如下所示:

<string-array name="tabs_names"> 
    <item>My Tab 1</item> 
    <item>My Tab 2</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

然后从您的Activity中获取引用,如下所示:

String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
Run Code Online (Sandbox Code Playgroud)


小智 11

仅供将来参考.

String资源文档中,它说:

您可以使用getString(int)或getText(int)来检索字符串.getText(int)将>保留应用于字符串的任何富文本样式.


thh*_*tor 6

解决方案1

Context context;
String mess = context.getString(R.string.mess_1)
Run Code Online (Sandbox Code Playgroud)

解决方案2

String mess = getString(R.string.mess_1)
Run Code Online (Sandbox Code Playgroud)