Android — фрагмент с использованием NavigationDrawer и onSavedInstanceState

Я использую это, чтобы создать панель навигации. Внутри одного из моих фрагментов у меня есть EditText. Я хочу, чтобы текст в EditText не менялся, если я поворачиваю экран.

Я пытался использовать Bundle savedInstanceState, но это не работает. Я думаю, что мне следует удалить строку android:configChanges из моего манифеста, но у меня нет этой строки.

Я пробовал с правильным ответом на этот вопрос, но он все еще не работает для меня. И что я должен делать? Спасибо :)


person andrew    schedule 19.12.2013    source источник


Ответы (1)


Если у вас нет строки android:configChanges, Android будет обрабатывать поворот экрана. Ваше приложение будет уничтожено и создано заново. Перед тем, как приложение будет уничтожено, Android вызывает onSavedInstanceState, где у вас есть возможность сохранить данные для воссоздания. Когда приложение воссоздается, пакет, переданный в onCreate, не является нулевым и содержит ваше сохраненное состояние.

Пытаться

public void onSavedInstanceState(Bundle bundle) {
    bundle.put("editTextString",et.getText().toString());
    super.onSavedInstanceState(bundle);
}

И в

public void onCreate(Bundle savedInstanceState) {
    if(savedInstanceState!=null) {
         String savedText = savedInstanceState.get("editTextString");
         et.setText(savedText);
    }
} 
person ElDuderino    schedule 19.12.2013
comment
если я попытаюсь, как вы говорите, я получу метод onSavedInstanceState (Bundle) undefined для ошибки типа Fragment. Если я перейду на super.onSaveInstanceState(bundle); это все еще не работает, и я уже пробовал это раньше :( - person andrew; 19.12.2013