OnBackPressed重新创建活动而不是完成活动

时间:2019-02-07 09:44:21

标签: android onbackpressed

   @Override
    public void onBackPressed() {
        if (searchView.isSearchOpen()) {
            searchView.closeSearch();
        } else if (activeFragment != homeFragment) {
            goToHomeFragment();
        } else {
            super.onBackPressed();
            finish();
        }
    }

在上面的代码中,在else块中到达时,活动将重新创建自身,而不是完成自身并退出。托管的活动有4个片段,但我想这与片段无关。那么关于出什么问题了吗?有什么建议么?谢谢您的关注。

编辑:根据Manzurul Hoque Rumi所说,moveTaskToBack(true)确实完成了工作。问题已中和。我要感谢所有回答我问题的人。

5 个答案:

答案 0 :(得分:0)

删除finish()并尝试

@Override
    public void onBackPressed() {
        if (searchView.isSearchOpen()) {
            searchView.closeSearch();
        } else if (activeFragment != homeFragment) {
            goToHomeFragment();
        } else {
            moveTaskToBack(true);
        }
    }

答案 1 :(得分:0)

您可以尝试在要关闭的活动的一部分中添加清单android:noHistory="true"

<activity
        android:name=".DeviceControlActivity"
        android:screenOrientation="landscape"
        android:noHistory="true"
        />

答案 2 :(得分:0)

如果您将根活动定义为可搜索活动,则应在清单中将其启动模式定义为singleTop。

android:launchMode="singleTop"

答案 3 :(得分:0)

 @Override
    public void onBackPressed() {
        if (searchView.isSearchOpen()) {
            searchView.closeSearch();
        } else if (activeFragment != homeFragment) {
            goToHomeFragment();
        } else {

            finish();
        }
    }

答案 4 :(得分:0)

确保您的活动没有被创建多次,仅调用finish()并删除super.onBackPressed()