如何仅显示片段布局

时间:2017-11-16 16:05:43

标签: android android-layout android-studio android-fragments

我有一份啤酒列表,这是我的主要活动 MainActivity 。每当我点击其中一个时,我想显示一个显示啤酒信息的新屏幕。

这是我的列表的外观以及为创建我的片段而执行的代码。

enter image description here

@Override
    public void onClick(View view) {

        // Data to send to fragment
        Beer beer = displayedList.get(getAdapterPosition());
        Bundle bundle = new Bundle();
        bundle.putParcelable("Beer", beer);
        bundle.putParcelableArrayList("BeerList", (ArrayList<? extends Parcelable>) beerList);

        // Begin the transaction
        FragmentTransaction ft = context.getSupportFragmentManager().beginTransaction();
        // Replace the contents of the container with the new fragment
        BeerInfoFragment beerInfoFragment = new BeerInfoFragment();
        beerInfoFragment.setArguments(bundle);
        ft.replace(R.id.frame_layout, beerInfoFragment);
        // or ft.add(R.id.your_placeholder, new FooFragment());
        // Complete the changes added above
        ft.commit();
    }
}

然而,我没有在新屏幕上显示啤酒的信息,而是同时获得两种布局:

enter image description here

问题:如何才能显示片段布局而不是两者?

这就是我的MainActivity布局的样子:

<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:scrollbars="vertical"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

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

1 个答案:

答案 0 :(得分:1)

你需要有两个片段。

  1. BeerListFragment :此片段将使用recyclerview显示您拥有的啤酒列表。
  2. BeerInfoFragment :此片段将显示点击/选中的啤酒项目的详细信息。
  3. 现在,在启动MainActivity时,将BeerListFragment添加到容器中。捕获项目的点击,并在处理后打开BeerInfoFragment,如问题中所述。