android activity onBackPressed 未调用

android activity onBackPressed not called

  @Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
        FragmentManager.BackStackEntry bSE = getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount() - 1);
        Fragment frag = getSupportFragmentManager().findFragmentByTag(bSE.getName());
        if (frag instanceof BackButtonBlocker)
        {
            BackButtonBlocker callback = (BackButtonBlocker) frag;
            callback.onBackPressed();
        }
        else {
            getSupportFragmentManager().popBackStack();
        }
    } else {
        super.onBackPressed();
    }
}

BackButtonBlocker接口用于回调。我的片段实现了 BackButtonBlocker,但有时不会发生 onBackPressed(还有 onKeyUp)。

当我打开导航抽屉时,onBackPressed 和完整的逻辑完全正确。

为什么 activity 失去焦点?

android.support.v4.app.Fragment

public interface BackButtonBlocker{ void onBackPressed();}

else{}中取出super.onBackPressed();

我所做的是,我没有实现任何接口来处理后退,见下文。

@Override
public void onBackPressed() {
    if (getDrawerLayout().isDrawerOpen(GravityCompat.START)) {
        closeLeftMenu();
    }
else {

    if (getSupportFragmentManager().getBackStackEntryCount() > 1) {
        super.onBackPressed();
    } else {
        finish(); // Means it is home and you can exit it from here.
    }
}}


When drawer is open just close it then use your code.

我通过在 Mainactivity 的容器视图上添加 setFocusableInTouchMode(true); requestFocus(); 解决了这个问题