如何使用 Kotlin 访问 Android strings.xml 中的值?
class MainActivity : AppCompatActivity(), View.OnClickListener {
override fun onClick(p0: View?) {
getToastCalled("")
TODO("not implemented")
}
private fun getToastCalled(message: String) {
TODO("not implemented")
}
var btn: Button? = null;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var tv_name=findViewById(R.id.tv) as TextView
btn=findViewById(R.id.button) as Button
tv_name.setText(KtTest().name);
(btn as Button).setOnClickListener(MainActivity@this)
}
}
在 Kotlin 中访问字符串值的工作方式与在 Java 中完全相同,只是使用 Kotlin 语法:
val string: String = getString(R.string.your_string_id)
(这假设您的代码位于 Android
Activity
或继承自 Context
的类似类中。如果不是,您需要从某处获取 Context
实例,并将其更改为 myContext.getString(...)
。)
如果您在 oncreate 外部访问它
Resources.getSystem().getString(R.string.btn_yes)
如果需要访问整个数组:
val data= resources.getStringArray(R.array.array_id)
如果有帮助,这就是我的做法 - 您需要应用程序上下文,还需要导入 R 类
applicationContext.getString(R.string.text_string)
import com.example.yourpackagename.R
要在我的代码中使用 strings.xml,我执行以下操作:
textView.text = "${getString(R.string.my_text)}"
@Robin 的回答几乎对我有用,但如果我不在
this.resources
之前添加 getString(R.string.tv)
,我的应用程序就会不断崩溃。
因此,要从 Kotlin 中的 strings.xml 文件中访问字符串值,请使用:
this.resources.getString(R.string.tv)
或者简单地说:
resources.getString(R.string.tv)
在我的 recyclerview 适配器中的 ViewHolder 类中,我像这样引用 string.xml;
binding.myText.setText(R.string.my_text)
您可以通过以下方式访问 Kotlin 中的字符串值:
val string:String = resources.getString(R.string.variable_name)
或使用:
val string: String = getString(R.string.variable_name)
更多详情,可以参考Android开发者文档
使用格式 - R.string.string_name
明确引用它,例如:
R.string.loadingText,
假设您的 XML 文件包含以下内容作为资源的一部分:
<string name="loadingText">The actual text to be displayed</string>
我用它作为标题栏,但我的应用程序崩溃了。
private var title: String = getString(R.string.profile)
您只需通过 -
"@string/variable_name"
即可访问字符串值。
例如 - 如果 strings.xml 包含类似
<string name="app_name">Tip Time</string>
的条目,那么您可以使用 - 访问它
"@string/app_name"