我写了这句话:
String Mess = R.string.mess_1 ;
获取字符串值,但不是返回字符串,而是返回integer类型的id。如何获取它的字符串值?我提到了string.xml文件中的字符串值。
我写了这句话:
String Mess = R.string.mess_1 ;
获取字符串值,但不是返回字符串,而是返回integer类型的id。如何获取它的字符串值?我提到了string.xml文件中的字符串值。
当前回答
getString(R.string.your_string)获取结果
其他回答
getString(R.string.your_string)获取结果
在活动:
this.getString(R.string.resource_name)
如果不在活动中,但可以访问上下文:
context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
细节
Android Studio 3.1.4 Kotlin版本:1.2.60
Task
单线使用 最小的代码 使用编译器的建议
步骤1。应用程序()
获得应用程序上下文的链接
class MY_APPLICATION_NAME: Application() {
companion object {
private lateinit var instance: MY_APPLICATION_NAME
fun getAppContext(): Context = instance.applicationContext
}
override fun onCreate() {
instance = this
super.onCreate()
}
}
步骤2。添加int扩展名
inline fun Int.toLocalizedString(): String = MY_APPLICATION_NAME.getAppContext().resources.getString(this)
使用
strings.xml
<resources>
<!-- ....... -->
<string name="no_internet_connection">No internet connection</string>
<!-- ....... -->
</resources>
获取字符串值:
val errorMessage = R.string.no_internet_connection.toLocalizedString()
结果
顺便说一下,也可以在strings.xml中创建字符串数组,如下所示:
<string-array name="tabs_names">
<item>My Tab 1</item>
<item>My Tab 2</item>
</string-array>
然后从你的Activity中你可以得到这样的引用:
String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
当你写R.时,你引用的是eclipse创建的R.java类,使用getResources().getString(),并在getString()方法中传递你试图读取的资源的id。
示例:String[] yourStringArray = getResources().getStringArray(R.array.Your_array);