【发布时间】:2021-04-17 01:25:43
【问题描述】:
我正在使用 onSavedInstanceState() 方法,因此在旋转设备后,我的 textview 不应该失去它的价值,但我遇到了我在活动中提到的崩溃。
以下是我的活动
class SavedInstanceActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_saved_instance)
imgPlus.setOnClickListener {
if (tvText.text.toString().toInt() >= 10)
tvText.text = "10"
else
tvText.text = tvText.text.toString().toInt().plus(1).toString()
}
imgMinus.setOnClickListener {
if (tvText.text.toString().toInt() <= 0)
tvText.text = "0"
else
tvText.text = tvText.text.toString().toInt().minus(1).toString()
}
if (savedInstanceState != null) {
count = savedInstanceState.getInt("int", 0)
tvText.text = count.toString()
}
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putInt("int", tvText.toString().toInt()) //getting crash here java.lang.NumberFormatException: For input string: "com.google.android.material.textview.MaterialTextView{12c8970 V.ED..... ........ 511,982-570,1084 #7f080174 app:id/tvText}"
Log.d("saved", tvText.toString())
}
}
【问题讨论】:
-
tvText中的文本无法解析为 Int,您能粘贴tvText中的文本吗 -
您需要编写 tvText.getText().toString().toInt() 因为 getText() 将传递来自 tvText 的值,否则根据您的代码 tvText 的 id 字符串将作为输出提供给您