Android工具栏,如何隐藏和显示片段

Android工具栏,如何隐藏和显示片段,android,android-fragments,android-toolbar,Android,Android Fragments,Android Toolbar,我有一个工具栏(android.support.v7.widget.ToolBar),它有两个可点击的图标,用来显示它们自己的视图 我认为,托管工具栏并持有onCreateOptionsMenu()、onOptionItemSelected()等方法的主要活动应该有2个片段,对应于图标。因此,当我点击一个图标,然后点击另一个图标时,相关的片段应该被隐藏/显示。这是前进的正确方式吗?还是我要用意图 我还想过将FragmentStatePager适配器与ViewPager一起使用,但我不确定这是否可

我有一个工具栏(android.support.v7.widget.ToolBar),它有两个可点击的图标,用来显示它们自己的视图

我认为,托管工具栏并持有onCreateOptionsMenu()、onOptionItemSelected()等方法的主要活动应该有2个片段,对应于图标。因此,当我点击一个图标,然后点击另一个图标时,相关的片段应该被隐藏/显示。这是前进的正确方式吗?还是我要用意图


我还想过将FragmentStatePager适配器与ViewPager一起使用,但我不确定这是否可行,因为这是一个工具栏,而不是一个单独的滑动机制,可以从片段a->片段B移动,反之亦然。

在活动中添加一个
框架布局

<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

显然,您必须事先初始化片段,并可能在执行事务之前添加一个检查以查看某个片段是否已显示。

只需使用两个片段,如果需要切换到另一个片段,请在
onOptionItemSelected()
中执行FragmentTransaction。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if(id == R.id.menu_item_1) {
        getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.content_frame, fragment1)
            .commit();
    } else if(id == R.id.menu_item_2) {
        getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.content_frame, fragment2)
            .commit();
    }

    return super.onOptionsItemSelected(item);
}