如何使用我正在使用的代码调整我的功能以显示正确的值。这样可能吗?谢谢
How do I adjust my function to display the correct value using the code that I am using. Is it possible this way? Thanks
这个fun应该怎么调?当 运行 应用程序时,toast 不显示值,而是按原样显示。希望这是有道理的。例如:将显示“选项:@string/about_us”而不是实际值
覆盖乐趣 onOptionsItemSelected(item: MenuItem): Boolean {
var selectedOption = ""
when (item.itemId) {
R.id.about_us -> selectedOption = "@string/about_us"
R.id.help -> selectedOption = "@string/help"
R.id.item_1 -> selectedOption = "@string/item_1"
R.id.item_2 -> selectedOption = "@string/item_2"
R.id.item_3 -> selectedOption = "@string/item_3"
}
val text = "Option: $selectedOption"
val toastiest = Toast.LENGTH_LONG
Toast.makeText(this, text, toastiest).show()
return super.onContextItemSelected(item)
}
您需要使用 Context#getString(stringResId)
从您定义的字符串中获取适当的字符串(如果您使用的是翻译,这也会处理获取适当的语言版本)。你不能在这里使用 @string/item_1
语法,那是 XML 的东西 - 你需要使用 R.string.item_1
您已经有一个 Context
(您在烤面包时正在使用它)所以我建议您这样做:
val selectedOption = when (item.itemId) {
R.id.about_us -> R.string.about_us
R.id.help -> R.string.help
R.id.item_1 -> R.string.item_1
R.id.item_2 -> R.string.item_2
R.id.item_3 -> R.string.item_3
else -> null
}?.let { getString(it) } ?: "fallback message goes here"
所以你将各种 ID 映射到它们的字符串资源 ID,然后你 运行 getString()
得到结果,所以你只需要写一次而不是每行重复它。
通过在没有匹配项时传递 null
,并在 let
之前传递 null-checking,您可以设置后备字符串 - ID 匹配并转换为字符串,或者您在 ?:
elvis 运算符之后获取该字符串。无论哪种方式,selectedOption
都会设置为某个值,因此您可以将其设置为 val
,因为它是在当时和那里定义的
这个fun应该怎么调?当 运行 应用程序时,toast 不显示值,而是按原样显示。希望这是有道理的。例如:将显示“选项:@string/about_us”而不是实际值 覆盖乐趣 onOptionsItemSelected(item: MenuItem): Boolean {
var selectedOption = ""
when (item.itemId) {
R.id.about_us -> selectedOption = "@string/about_us"
R.id.help -> selectedOption = "@string/help"
R.id.item_1 -> selectedOption = "@string/item_1"
R.id.item_2 -> selectedOption = "@string/item_2"
R.id.item_3 -> selectedOption = "@string/item_3"
}
val text = "Option: $selectedOption"
val toastiest = Toast.LENGTH_LONG
Toast.makeText(this, text, toastiest).show()
return super.onContextItemSelected(item)
}
您需要使用 Context#getString(stringResId)
从您定义的字符串中获取适当的字符串(如果您使用的是翻译,这也会处理获取适当的语言版本)。你不能在这里使用 @string/item_1
语法,那是 XML 的东西 - 你需要使用 R.string.item_1
您已经有一个 Context
(您在烤面包时正在使用它)所以我建议您这样做:
val selectedOption = when (item.itemId) {
R.id.about_us -> R.string.about_us
R.id.help -> R.string.help
R.id.item_1 -> R.string.item_1
R.id.item_2 -> R.string.item_2
R.id.item_3 -> R.string.item_3
else -> null
}?.let { getString(it) } ?: "fallback message goes here"
所以你将各种 ID 映射到它们的字符串资源 ID,然后你 运行 getString()
得到结果,所以你只需要写一次而不是每行重复它。
通过在没有匹配项时传递 null
,并在 let
之前传递 null-checking,您可以设置后备字符串 - ID 匹配并转换为字符串,或者您在 ?:
elvis 运算符之后获取该字符串。无论哪种方式,selectedOption
都会设置为某个值,因此您可以将其设置为 val
,因为它是在当时和那里定义的