如何在设备屏幕关闭再打开时保存/恢复片段状态

时间:2014-05-13 08:35:04

标签: android android-fragments android-lifecycle

我有一个带有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);
}

1 个答案:

答案 0 :(得分:1)

  

我有一个带有EditText的片段,用户可以在其中输入   更长的文字。现在,当用户输入内容时,请关闭屏幕   无论什么原因,然后再次打开屏幕EditText是   空。

这不是默认行为。 EditText状态应保持原样。

  

我认为onSaveInstance应该是保存的正确位置   state,以及任何创建方法(实际上都有   saveInstance参数)应该足以检索以前的   保存状态 - 但它不起作用。调用onSaveInstance,但是   create方法不会检索此对象。

是的。您应该使用onSavedInstanceState/onActivityCreated对而不是onCreate