Дополнения Android теряются на onBackPressed () - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь сохранить некоторые данные намеренно, поэтому, когда пользователь заходит на другой экран или нажимает кнопку назад и возвращается, данные сохраняются.По сути, сохраняя состояние экрана.

Итак, вы находитесь в Фрагмент 1 , вы переходите к Деятельность 2 (важные данные здесь), если вы уходите действие 2 , когда вы возвращаетесь назад или другим способом, когда вы возвращаетесь, данные все еще там.

Здесь я начинаю задание 2 с фрагмента 1

intent = new Intent(getActivity(), DeliveryPageActivity.class);
...
startActivityForResult(intent, 

Вот где я сейчас пытаюсь решить проблему

@Override
public void onBackPressed() {

    //saving here (working okay)
    storeIntent.putExtra("currentDelivery", pageIndicatorView.getCurrentPage());
    setResult(RESULT_OK, storeIntent);
    super.onBackPressed();
}

@Override
protected void onResume() {
    super.onResume();

    //restoring here (NOT WORKING, intent has no extras)
    if (storeIntent.hasExtra("currentDelivery")) {
        currentDelivery = storeIntent.getIntExtra("currentDelivery", currentDelivery);
        pageIndicatorView.setCurrentPage(currentDelivery, true);
    }
}

И запуск new намерение в onCreate()

    storeIntent = new Intent();

Ответы [ 3 ]

1 голос
/ 02 апреля 2019

Попробуйте переопределить onPause вместо onBackPressed в Упражнении 2. Информацию о жизненном цикле действия см. В

Edit: Извините, только что проверил. В вашем случае я бы использовал SharedPreferences для восстановления и переопределить OnPause (get вызывается при нажатии кнопки назад) и onResume следующим образом:

@Override
protected void onPause() {
    super.onPause();
    SharedPreferences sp = this.getSharedPreferences("myPrefsName", MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    editor.putInt("currentDelivery",pageIndicatorView.getCurrentPage());
    editor.apply();
}

@Override
protected void onResume() {
    super.onResume();
    SharedPreferences sp = this.getSharedPreferences("myPrefsName", MODE_PRIVATE);
    testState = sp.getInt("currentDelivery", 0);
}
0 голосов
/ 02 апреля 2019

вызов finish(); вместо super.onBackPressed()

@Override
public void onBackPressed() {
    //saving here (working okay)
    storeIntent.putExtra("currentDelivery", pageIndicatorView.getCurrentPage());
    setResult(RESULT_OK, storeIntent);
    finish();
}
0 голосов
/ 02 апреля 2019

Если вы не хотите получать какие-либо данные, то нет смысла использовать метод startActivityForResult().Вы можете просто использовать метод startActivity(), чтобы открыть занятие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...