我有一份啤酒列表,这是我的主要活动 MainActivity 。每当我点击其中一个时,我想显示一个显示啤酒信息的新屏幕。
这是我的列表的外观以及为创建我的片段而执行的代码。
@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();
}
}
然而,我没有在新屏幕上显示啤酒的信息,而是同时获得两种布局:
问题:如何才能显示片段布局而不是两者?
这就是我的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>
答案 0 :(得分:1)
你需要有两个片段。
现在,在启动MainActivity时,将BeerListFragment添加到容器中。捕获项目的点击,并在处理后打开BeerInfoFragment,如问题中所述。