android - 将工具栏主页按钮用于 popBackStack

标签 android android-fragments

应用有 Viewpager,它有 四个标签 fragment 。第二个 fragment 具有框架布局“FL”,我将 fragment 与 ListView 放在一起。当用户单击 ListView 项目时,在此框架布局“FL”中使用 ListView 打开新 fragment ,依此类推。

我将使用具有多级类别的 prudacts 做目录

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

catalog

这是我的收获:

我使用主页按钮从其他选项卡转到第一个选项卡:

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

        }
    });

最佳答案

使用下面的代码替换 fragment

 @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 类中添加下面提到的代码

在您的 Fragment onCreateView 中添加以下行

 setHasOptionsMenu(true);

使用下面的代码返回上一个 fragment 。

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

关于android - 将工具栏主页按钮用于 popBackStack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36442677/

相关文章:

Android onBackPressed() 方法内部

java - 使用 Jsoup 和 Android Studio 截断网站

android - addToBackStack 不工作

android - 我可以在 Fragment 中注册 MVP Presenter

android - 非矩形 fragment/交织布局

android - 如何检查 SectionsPagerAdapter 选项卡是否可见

Android Studio - 删除模块 - IncorrectOperationException : Must not change document outside command or undo-transparent action

android - 如何在 Android 应用程序中使用来自 GitHub 的库

android - 我们可以将文件从一个 Android 应用传输到另一个吗

android - 如何处理 AlertDialog 关闭事件?