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

Android Toolbar, how to hide and show fragments

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

我认为,托管工具栏并包含 onCreateOptionsMenu()、onOptionItemSelected() 等方法的主要 activity 应该有 2 个片段,对应于图标。所以当我点击一个图标,然后点击另一个图标时,相关的片段应该是hidden/shown。这是前进的正确方法吗?还是我打算使用意图?

我还考虑过将 FragmentStatePager 适配器与 ViewPager 一起使用,但我不确定这是否可行,因为这是一个 ToolBar 而不是从 Fragment A -> Fragment B 移动的单独滑动机制,反之亦然。

在您的activity中添加一个FrameLayout

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

然后在单击工具栏按钮时换出片段,如下所示:

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

显然,您必须事先初始化您的片段,并且可能会添加检查以查看某个片段是否已在您进行交易之前显示。