Fragmenttransition替换不清理按钮

时间:2016-05-19 11:24:03

标签: android fragmenttransaction

我正在尝试使用带有两个按钮的工具栏来创建导航抽屉。当我单击按钮时,它应该在两个片段之间切换。

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中的所有内容都被清除。我知道我可以改变按钮的可见性。 关于为什么会出现这种行为的任何帮助?

1 个答案:

答案 0 :(得分:0)

我认为你必须使用

fragmentManager.beginTransaction().replace();

而不是

fragmentManager.beginTransaction().add();