【问题标题】:Android Toolbar, how to hide and show fragmentsAndroid Toolbar,如何隐藏和显示片段
【发布时间】:2016-04-19 06:22:49
【问题描述】:

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

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

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

【问题讨论】:

  • 只使用两个Fragment,如果需要切换到另一个Fragment,在onOptionItemSelected()做一个FragmentTransaction。

标签: android android-fragments android-toolbar


【解决方案1】:

在您的活动中添加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);
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2011-10-27
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多