addToBackStack不使用onBackPressed方法

时间:2017-03-17 18:32:15

标签: android android-studio android-fragments

我在导航抽屉活动中创建了一个标签式活动。我已将导航抽屉内的列表与各个片段相关联。我还在ft.commit()之前使用了命令ft.addToBackStack(null)。它非常好,我可以用它来关闭导航抽屉里面的碎片。现在我已经在选项卡式活动(主页)的片段中创建了Web视图。我添加了onBackPressed以返回webview内部,现在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();
    }

onBackPressed方法

@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());



}

请帮帮我!!!

1 个答案:

答案 0 :(得分:1)

尝试此代码:在选项卡式活动(主页)中覆盖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();
        }
}