我如何从kotlin android中的strings.xml访问值

Dhe*_*raj 17 android kotlin

我如何从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)
    }
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*bin 43

在Kotlin中访问字符串值的工作方式与在Java中完全相同,只需使用Kotlin语法:

val string: String = getString(R.string.your_string_id)
Run Code Online (Sandbox Code Playgroud)

  • @IgorGanapolsky好吧,是的,从技术上讲可以,但是那是编程错误,或者编译过程出错。不能以任何有意义的方式来恢复此返回null的调用,因此在Java中,此处从未检查过null,并且幸运的是,您也不需要在Kotlin中。 (3认同)
  • @RowanBerry `getString` 是在 `Context` 上定义的。我的示例代码是假设您位于 Android `Activity` 中而编写的,它继承自 `Context`,但如果您在其他地方需要它,则需要在某个地方有一个可用的 `Context`。在这种情况下,您需要将示例更改为“myContext.getString(...)”。(免责声明 - 很长时间没有进行 Android 开发,细节可能已更改) (3认同)

Pra*_*137 8

如果您在 oncreate 之外访问它,那么

    Resources.getSystem().getString(R.string.btn_yes)  
Run Code Online (Sandbox Code Playgroud)


Fan*_*dez 7

如果它有帮助,这就是我的做法 - 您需要应用程序上下文并且还需要导入 R 类

applicationContext.getString(R.string.text_string)
import com.example.yourpackagename.R
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您需要访问整个阵列:

val data= resources.getStringArray(R.array.array_id)
Run Code Online (Sandbox Code Playgroud)