如何在 Kotlin 中访问 Android“strings.xml”中的值

问题描述 投票:0回答:11

如何使用 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)
    }
}
android kotlin android-resources
11个回答
133
投票

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

val string: String = getString(R.string.your_string_id)

(这假设您的代码位于 Android

Activity
或继承自
Context
的类似类中。如果不是,您需要从某处获取
Context
实例,并将其更改为
myContext.getString(...)
。)


30
投票

如果您在 oncreate 外部访问它

    Resources.getSystem().getString(R.string.btn_yes)  

11
投票

如果需要访问整个数组:

val data= resources.getStringArray(R.array.array_id)

8
投票

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

applicationContext.getString(R.string.text_string)
import com.example.yourpackagename.R

3
投票

要在我的代码中使用 strings.xml,我执行以下操作:

textView.text = "${getString(R.string.my_text)}"


2
投票

@Robin 的回答几乎对我有用,但如果我不在

this.resources
之前添加
getString(R.string.tv)
,我的应用程序就会不断崩溃。

因此,要从 Kotlin 中的 strings.xml 文件中访问字符串值,请使用:

this.resources.getString(R.string.tv)

或者简单地说:

resources.getString(R.string.tv)


2
投票

在我的 recyclerview 适配器中的 ViewHolder 类中,我像这样引用 string.xml;

binding.myText.setText(R.string.my_text)

1
投票

您可以通过以下方式访问 Kotlin 中的字符串值:

val string:String = resources.getString(R.string.variable_name)

或使用:

val string: String = getString(R.string.variable_name)

更多详情,可以参考Android开发者文档


0
投票

使用格式 - R.string.string_name

明确引用它,例如:

R.string.loadingText,

假设您的 XML 文件包含以下内容作为资源的一部分:

<string name="loadingText">The actual text to be displayed</string>

0
投票

我用它作为标题栏,但我的应用程序崩溃了。

private var title: String = getString(R.string.profile)

0
投票

您只需通过 -

"@string/variable_name"
即可访问字符串值。

例如 - 如果 strings.xml 包含类似

<string name="app_name">Tip Time</string>
的条目,那么您可以使用 -

访问它
"@string/app_name"
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.