android - recreate() 后 onBackPressed 不调用

标签 android back-button onbackpressed recreate

问题描述:

我的应用有主 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());

&看到魔法。 您不需要重新设置任何 bundleintent

关于android - recreate() 后 onBackPressed 不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37832489/

相关文章:

android - 在相机 Activity 期间按后退按钮停止应用程序

android - fragment 返回指定 fragment

java - 按下返回键后,所有内容都会最小化

android - 已发布的应用在 Play 商店中不可见

java - Android:用于设置 NestedScrollView 最大高度的自定义类不起作用(没有滚动条)

android - 如何在我按返回时关闭应用程序?

php - 点击后退按钮重新加载页面

android - Gradle 与 Travis CI 在 Android 项目上的依赖关系

java - 下载和运行 .apk 文件时出现解析错误

android - 如何确定是否在 AccessibilityService 中按下了后退键,onKeyDown 没有响应?