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

时间:2017-07-02 13:49:23

标签: 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)
    }
}

10 个答案:

答案 0 :(得分:23)

使用Kotlin语法访问Kotlin中的字符串值与Java中的字符串值完全相同:

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

答案 1 :(得分:6)

如果您访问的是在 oncreate 之外,则

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

答案 2 :(得分:3)

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

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

答案 3 :(得分:2)

如果这是我的帮助,那么-您需要应用程序上下文并导入R类

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

答案 4 :(得分:1)

要在我的代码中使用 strings.xml,我执行以下操作:
textView.text = "${getString(R.string.my_text)}"

答案 5 :(得分:0)

如果您想从上下文或活动(例如数据模型类)之外访问String,则可以这样实现:

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cellA = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! VideoViewCell
    cellA.VideoCellLabel.text = videoArray[indexPath.item]
    gradientLayer = CAGradientLayer()
    gradientLayer.frame = cellA.contentView.bounds
    gradientLayer.colors = [#colorLiteral(red: 0.5137254902, green: 0.3764705882, blue: 0.7647058824, alpha: 1).cgColor, #colorLiteral(red: 0.1803921569, green: 0.7490196078, blue: 0.568627451, alpha: 1).cgColor]

    cellA.contentView.layer.insertSublayer(gradientLayer, at: 0)

    return cellA
}

编辑:仅适用于系统范围的资源,而不适用于应用程序资源

答案 6 :(得分:0)

使用格式-R.string.string_name

例如,明确引用它:

R.string.loadingText,

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

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

答案 7 :(得分:0)

我在IDE中使用 File> Invalidate Caches / Restart ... 解决了此问题,然后可以访问视图的引用。

GL

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

您可以简单地通过 - "@string/variable_name" 访问字符串值。

例如 - 如果 strings.xml 包含像 <string name="app_name">Tip Time</string> 这样的条目,那么您可以使用 -

访问它
"@string/app_name"