如何在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)
}
}
答案 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"