gpt4 book ai didi

java - Kotlin硬编码字符串

转载 作者:行者123 更新时间:2023-12-02 13:16:19 25 4
gpt4 key购买 nike

我想使用Android Studio翻译编辑器向我的应用添加多语言支持。但是它仅支持.xml字符串。我在数据类中有一些字符串,并且使用数据类来制作ArrayList。我真的很想从.xml调用这些字符串,但是我不知道怎么做。
我的数据类:

data class Infodc (
val id: Int,
val header: String,
val image: Int,
val infoOne: String,
val infoTwo: String
)
我的列表
object Constants{
fun getInfo(): ArrayList<Infodc>{
val infoList = ArrayList<Infodc>()

val inf1 = Infodc(
1, "header_str", R.drawable.image0,
"string_1", "string_2")
infoList.add(inf1)
return infoList
}
}
我尝试用 R.string.string_header代替 header = "header_str",但是只显示10位数字,而不显示字符串本身。
之后,我尝试了 getString,但再次失败了。

最佳答案

您可以这样做:

class MainActivity : AppCompatActivity()
{
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val infodc = Infodc(
1,
R.string.header,
R.drawable.ic_launcher_foreground,
R.string.info_one,
R.string.info_two,
this
)

Log.d("MyTag", "$infodc") // D/MyTag: Infodc(id=1, header=Header, image=2131099744, infoOne=Info One, infoTwo=Info Two)


}
}

data class Infodc(
val id: Int,
val header: String,
val image: Int,
val infoOne: String,
val infoTwo: String
)
{
constructor(
id: Int,
@StringRes header: Int,
@DrawableRes image: Int,
@StringRes infoOne: Int,
@StringRes infoTwo: Int,
context: Context
) : this(
id,
context.getString(header),
image,
context.getString(infoOne),
context.getString(infoTwo)
)
}
现在,您可以传递给String和image的构造函数ID,但作为类字段,您将获得String

另一种方法是拥有一个仅包含字符串ID的类,然后在要使用它时使用该字段的 getString

关于java - Kotlin硬编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63978302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com