addToBackStack 不适用于 onBackPressed 方法



我在导航抽屉活动内创建了一个选项卡式活动。我已经将导航抽屉内的列表与单个片段链接在一起。我还在 ft.commit(( 之前使用了命令 ft.addToBackStack(null(。它非常好,我能够用它来关闭导航抽屉内的碎片。现在,我已经在选项卡式活动(主页(的片段内创建了Web视图。我添加了onBackPress以返回Web视图,现在addToBackStack方法停止工作。

对于导航抽屉碎片,

private void dispaySelectedScreen(int id) {
    Fragment fragment = null;
    switch (id) {
        case R.id.fragment1:
            fragment = new Fragment1();
            break;
        case R.id.fragment2:
            fragment = new Fragment2();
            break;
        case R.id.fragment3:
            fragment = new Fragment3();
            break;
        case R.id.fragment4:
            fragment = new fragment4();
            break;
    }
    if (fragment != null) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.content_main, fragment);
        ft.addToBackStack(null);
        ft.commit();
    }

背压法

@Override
public void onBackPressed() {
    if (hWebView.canGoBack()) {
        hWebView.goBack();
    } else if (!getFragmentManager().popBackStackImmediate())
        if (sWebView.canGoBack()) {
            sWebView.goBack();
        } else if (!getFragmentManager().popBackStackImmediate())
            if (dWebView.canGoBack()) {
                dWebView.goBack();
            } else if (!getFragmentManager().popBackStackImmediate());

}

请帮帮我!!

请尝试以下代码:覆盖选项卡式活动(主页(中的onBackPressed()

@Override
public void onBackPressed() {
    FragmentManager fm = getSupportFragmentManager();
    if (hWebView.canGoBack()) {
        hWebView.goBack();
    } else if (!getFragmentManager().popBackStackImmediate())
        if (fm.getBackStackEntryCount() > 0) {
            fm.popBackStack();
        } else {
            super.onBackPressed();
        }
}

最新更新