问题描述
我想使用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
的{{1}}用于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
。