【发布时间】:2020-06-01 23:24:06
【问题描述】:
我有两个片段 A 和 B。我正在尝试导航到 B,然后返回到 A。在执行此操作时,我在 A 中有一些表单数据(一堆文本字段),我想保留这些数据在来回导航到 B 时。当我从 B 中 navigateUp() 时,A 中的数据被保留,但我无法将数据从 B 传递到 A。如果我在导航回 A 时使用捆绑包,我无法使用 onSaveInstanceState() 保存数据。我在片段 A 中使用了以下代码来保存表单数据(来自:https://developer.android.com/guide/components/activities/activity-lifecycle#instance-state)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(savedInstanceState!=null){
with(savedInstanceState) {
inputName.setText(getString("Name"))
}
}
else{
//I just leave it since the text fields will be empty anyways
}
}
override fun onSaveInstanceState(outState: Bundle) {
outState.run {
putString("Name",inputName.text.toString())
}
super.onSaveInstanceState(outState)
}
但是当我离开时不会调用 onSaveInstaceState(因此,当调用 onCreate 时,值最终为 null 并且流程转到 if 语句)。我要做的就是在从 A 导航到 B 时将数据保存在 A 中。
【问题讨论】:
-
查找
startActivityForResult()。 -
您能否解释一下您的用例。我的意思是在什么情况下你想将数据传回前一个片段。
-
当我选择一个单选按钮并单击另一个按钮时,该单选按钮的标签被发送回片段 A
标签: android-fragments kotlin android-navigation android-bundle android-safe-args