我有一个带有EditText的片段,用户可以输入更长的文本。现在,当用户输入内容时,无论出于何种原因关闭屏幕,然后再次打开屏幕,EditText为空。
我认为onSaveInstance应该是保存状态的正确位置,任何创建方法(实际上都有saveInstance参数)应该足以检索以前保存的状态 - 但它不起作用。调用onSaveInstance,但create方法不检索此对象。
所以问题是: 如何在屏幕关闭时保存片段的状态,如何在屏幕再次打开时恢复此状态?
编辑: 我已经实施了blackbelt的方法,但它仍然无法正常工作。 (savedInstanceState为null)
@Override
public void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
review.finalStatement = savedInstanceState.getString
(BUNDLE_KEY_STATEMENT);
}
}
@Override
public void onSaveInstanceState(final Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(BUNDLE_KEY_STATEMENT, review.finalStatement);
}
答案 0 :(得分:1)
我有一个带有EditText的片段,用户可以在其中输入 更长的文字。现在,当用户输入内容时,请关闭屏幕 无论什么原因,然后再次打开屏幕EditText是 空。
这不是默认行为。 EditText状态应保持原样。
我认为onSaveInstance应该是保存的正确位置 state,以及任何创建方法(实际上都有 saveInstance参数)应该足以检索以前的 保存状态 - 但它不起作用。调用onSaveInstance,但是 create方法不会检索此对象。
是的。您应该使用onSavedInstanceState/onActivityCreated
对而不是onCreate