Java 如何在恢复状态时填充EditText数据?
下面是以下场景:Java 如何在恢复状态时填充EditText数据?,java,android,android-layout,android-activity,Java,Android,Android Layout,Android Activity,下面是以下场景: 在活动A中填写EditText和其他字段 在按钮上从活动A移动到活动B,单击 现在,单击按钮,从活动B移动到活动A 填充的EditText现在已消失。它们都是空的 这些字段应预先填充(因为用户已填充) 有没有办法保存活动的当前状态A。这样我就可以填充EditText了?如果没有,我如何完成上述任务?使用SharedReferences.Editor在暂停时保存EditText数据,并在恢复时使用SharedReferences检索数据。这是最简单的方法。使用SharedRefe
A
中填写EditText
和其他字段
按钮上从活动A
移动到活动B
,
单击B
移动到活动A
EditText
现在已消失。它们都是空的有没有办法保存活动的当前状态
A
。这样我就可以填充EditText
了?如果没有,我如何完成上述任务?使用SharedReferences.Editor在暂停时保存EditText数据,并在恢复时使用SharedReferences检索数据。这是最简单的方法。使用SharedReferences.Editor在暂停时保存EditText数据,并在恢复时使用SharedReferences检索数据。这是最简单的方法。要保存活动状态,请重写OnSaveInstanceState()方法
并使用
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
somevalue = savedInstanceState.getString("key");
}
如果要销毁活动并再次创建它,请使用此方法。要保存活动状态,请重写OnSaveInstanceState()方法 并使用
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
somevalue = savedInstanceState.getString("key");
}
如果要销毁活动并再次创建它,请使用此方法。如何从b移回a?如果您正在使用意图,那么您将启动该“a”活动的新实例。像上面提到的一些人一样,你应该在你的b活动中使用finish,这会把你带回到a。如果需要使用b中的数据填充a,则应使用startActivityForResult-如何从b移回a?如果您正在使用意图,那么您将启动该“a”活动的新实例。像上面提到的一些人一样,你应该在你的b活动中使用finish,这会把你带回到a。如果需要使用b中的数据填充a,则应使用startActivityForResult-是否为编辑文本分配了唯一ID?与android:id=“@+id/foobar”中一样?如果是这样,则活动应保存其状态.“现在,单击按钮即可从活动B移动到活动A”-您只需从B调用finish()。如果您的xml中有EditText的ID,则状态将自动保存。@Floern@Shadab I为每个文本视图分配了唯一的
ID
。以下是场景:用户通过UI填写活动A中的必填字段,并使用ActivityB_u2;.intent(Activity1.this.start())移动到活动b;代码。现在,用户使用ActivityA_u2;.intent(ActivityB.this.start())返回活动A;代码。活动的UI现在是空的(我填写的数据现在不在了:)啊,我想你应该回到A的前一个实例,而不是“转发”到一个新实例。在这种情况下,您必须手动保存数据,如下面提到的共享首选项或类似选项。获取数据并再次使用相同的数据填充编辑文本。对吗?您是否为编辑文本分配了唯一的ID?与android:id=“@+id/foobar”中一样?如果是这样,则活动应保存其状态.“现在,单击按钮即可从活动B移动到活动A”-您只需从B调用finish()。如果您的xml中有EditText的ID,则状态将自动保存。@Floern@Shadab I为每个文本视图分配了唯一的ID
。以下是场景:用户通过UI填写活动A中的必填字段,并使用ActivityB_u2;.intent(Activity1.this.start())移动到活动b;代码。现在,用户使用ActivityA_u2;.intent(ActivityB.this.start())返回活动A;代码。活动的UI现在是空的(我填写的数据现在不在了:)啊,我想你应该回到A的前一个实例,而不是“转发”到一个新实例。在这种情况下,您必须手动保存数据,如下面提到的共享首选项或类似选项。获取数据并再次使用相同的数据填充编辑文本。对吧?谢谢你的回答。我想你误解了我的问题。用户通过用户界面填写活动A
中的必填字段,并使用ActivityB_uuu.intent(Activity1.this).start()移动到活动b
代码>代码。现在用户使用ActivityA_uu.intent(ActivityB.this.start())返回到Activity A
代码>代码。活动的UI现在为空(我填写的数据现在不存在:)我知道您正在创建活动a的新实例,但您没有删除前一个实例,是吗?如果你有共同的偏好,你可以使用这个答案。谢谢你的回答。我想你误解了我的问题。用户通过用户界面填写活动A
中的必填字段,并使用ActivityB_uuu.intent(Activity1.this).start()移动到活动b
代码>代码。现在用户使用ActivityA_uu.intent(ActivityB.this.start())返回到Activity A
代码>代码。活动的UI现在为空(我填写的数据现在不存在:)我知道您正在创建活动a的新实例,但您没有删除前一个实例,是吗?如果您不同意共享偏好,则可以使用此答案。