问题描述:
我的应用有主 Activity 和设置 Activity 。每次关闭设置 Activity 后,主 Activity 都会重新创建。
Main Activity 可以在两个地方通过 finish() 关闭(应用程序退出):操作栏中的主页按钮和返回按钮(硬件或弹出栏)。
Home 按钮工作正常,Back 按钮在开始时工作,但如果用户在设置 Activity 中,关闭它并返回主 Activity,onBackPressed() 函数不再调用。
如果我删除娱乐,后退按钮可以正常工作,就像主页按钮一样。
如果有人知道为什么 recreate() 会弄乱后退按钮?
谢谢。
部分相关代码:
主要 Activity :
@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();
}
最佳答案
只需将 recreate()
方法替换为
finish();
startActivity(getIntent());
&看到魔法。
您不需要重新设置任何 bundle
和 intent
。
关于android - recreate() 后 onBackPressed 不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37832489/