我正在尝试使用带有两个按钮的工具栏来创建导航抽屉。当我单击按钮时,它应该在两个片段之间切换。
switch (v.getId()) {
case R.id.lay_publist_toolbar:
android.support.v4.app.Fragment listFrag= new PubListFragment();
FragmentManager listfragmentManager = getSupportFragmentManager();
FragmentTransaction listfragmentTransaction = listfragmentManager.beginTransaction();
listfragmentTransaction.replace(R.id.lay_hole_fragment, listFrag,"i")
.addToBackStack(null)
.commit();
break;
case R.id.lay_maplist_toolbar:
android.support.v4.app.Fragment nextFrag= new MapsActivity();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.lay_hole_fragment, nextFrag,"d")
.addToBackStack(null)
.commit();
break;
主要活动的xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="7dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar">
</include>
<FrameLayout
android:id="@+id/lay_hole_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Solo"
android:layout_gravity="center_horizontal|top" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/common_google_signin_btn_icon_light_normal"
android:layout_gravity="center" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click here"
android:layout_gravity="left|center_vertical" />
</FrameLayout>
...
在第一种情况下,清除Frameayout内部的任何内容。在第二种情况下,片段实现了Google Maps,除了Button之外,FrameLayout中的所有内容都被清除。我知道我可以改变按钮的可见性。 关于为什么会出现这种行为的任何帮助?
答案 0 :(得分:0)
我认为你必须使用
fragmentManager.beginTransaction().replace();
而不是
fragmentManager.beginTransaction().add();