Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 恢复片段时使用setSupportActionBar()设置工具栏_Android_Android Fragments_Android Actionbar_Android Toolbar - Fatal编程技术网

Android 恢复片段时使用setSupportActionBar()设置工具栏

Android 恢复片段时使用setSupportActionBar()设置工具栏,android,android-fragments,android-actionbar,android-toolbar,Android,Android Fragments,Android Actionbar,Android Toolbar,在我的应用程序中,我有: 行动B活动A 带工具栏1的碎片1 带工具栏2的碎片2 ActionBarActivity A显示片段1(它使用活动的setSupportActionBar()方法将toolbar1设置为actionbar) 按下按钮,显示Fragment2(使用FragmentTransaction的add()方法),现在Fragment2使用setSupportActionBar()将toolbar2设置为操作栏 按back可弹出Backback以再次显示Fragment1。这里

在我的应用程序中,我有:

  • 行动B活动A
  • 带工具栏1的碎片1
  • 带工具栏2的碎片2
ActionBarActivity A显示片段1(它使用活动的setSupportActionBar()方法将toolbar1设置为actionbar)

按下按钮,显示Fragment2(使用FragmentTransaction的add()方法),现在Fragment2使用setSupportActionBar()将toolbar2设置为操作栏

按back可弹出Backback以再次显示Fragment1。这里我想再次将toolbar1设置为actionbar

最简单的方法是什么?(希望不要试图理解显示的是哪个片段,也不要设置每个片段的工具栏)

使用


什么是“获取碎片”?我想要一些通用的东西,应用于我的所有片段(而不是通过标记查找每个片段),您需要获得当前显示的片段的引用。使用findFragmentById。如果每个片段都设置了不同的ActionBar,那么如何使其通用?我要找的是什么id?正如我所说的,我不想通过让片段实现一个为活动提供工具栏的界面来逐个检查
        getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
        @Override public void onBackStackChanged() {
            //get the fragment.
            if (fragment instanceof BaseFragment) {
                //set action bar
                setActionBar(((BaseFragment)fragment).getActionBar());
            }

        }
    });