Описание проблемы:onBackPressed not calls after recreate()
Мое приложение имеет Основное действие и деятельность по настройке. После каждого закрытия действия «Настройки» основная активность воссоздается.
Основная деятельность может быть закрыта (выход приложения) финишем() в двух местах: кнопка «Дом» в панели действий и кнопка «Назад» (аппаратная или всплывающая панель).
Кнопка «Дом» работает без проблем, кнопка «Назад» работает с самого начала, но если пользователь находился в «Действиях по настройке», закрыл ее и вернул в «Основная активность», функция onBackPressed() больше не вызывалась.
Если я удаляю отдых, кнопка «Назад» работает нормально, как кнопка «Домой».
Так, если кто-нибудь знает, почему воссоздать() испортить с помощью кнопки «Назад»?
Спасибо.
Части соответствующего кода:
Основная деятельность:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Open Settings Activity
case R.id.menuSettings:
Intent intent = new Intent(this, SettingsActivity.class);
startActivityForResult(intent, REQUEST_SETTINGS);
return true;
// Close the App
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
return;
}
switch (requestCode) {
case REQUEST_SETTINGS:
// Recreate activity
recreate();
break;
}
}
// Close App on Back Button Click
@Override
public void onBackPressed() {
super.onBackPressed();
finish();
}
}
Может быть, вы должны прочитать о режимах запуска https://developer.android.com/guide/topics/manifest/activity-element.html#lmode – Raghunandan
Что такое код, написанный в воссоздании? –
У меня также есть эта проблема. Но не на всех устройствах! Во всех эмуляторах (которые я тестировал) он работает правильно; в физических устройствах нет. Я не понимаю, что происходит. –