使用工具栏主页按钮进行popBackStack

时间:2016-04-06 05:57:23

标签: android android-fragments

应用 Viewpager 四个标签 片段 。第二个片段有framelayout" FL"我把片段放在listview的地方。当用户点击listview项目时,在此framelayout中打开带有listview的新片段" FL"等等。

我将使用多级别类别的prudact来执行 目录

我的意见:当我打开片段级别3时,如何在第二个片段中实现,而不是单击 工具栏主页按钮 返回到片段级别2和另一个单击返回到片段级别1(popBackStack),最后当单击 工具栏主页按钮 时,转到 第一个选项卡 即可。任何帮助对我都有用。感谢

catalog

我有什么成功:

我使用主页按钮从其他标签中转到 第一个标签

 toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MainActivity.this.setCurrentItem(0, true);

        }
    });

1 个答案:

答案 0 :(得分:1)

要替换片段,请使用以下代码

 @Override
    public void replaceFragment(Fragment fragment, String title) {
        String backStateName = fragment.getClass().getName();
        FragmentManager manager = getSupportFragmentManager();
        boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);
        if (!fragmentPopped) { //fragment not in back stack, create it.
            FragmentTransaction ft = manager.beginTransaction();
            ft.replace(R.id.container_body, fragment);
            ft.addToBackStack(backStateName);
            ft.commit();
            //     getSupportActionBar().setDisplayShowTitleEnabled(false);
            getSupportActionBar().setTitle("");
        }
    }

在您的片段类中添加以下提到的代码

在Fragment onCreateView

中添加以下行
 setHasOptionsMenu(true);

使用以下代码返回上一个片段。

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                if (getActivity().getSupportFragmentManager().getBackStackEntryCount() > 1) {
                    getFragmentManager().popBackStack();
                    return true;
                }
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        if (getActivity().getSupportFragmentManager().getBackStackEntryCount() > 1) {
            getFragmentManager().popBackStack();
        }
    }