Android fragment.replace()第一个参数不能真正替换的解决方法

来源:互联网 发布:半熟鸡蛋 知乎 编辑:程序博客网 时间:2024/04/25 02:42

在用tabhost切换fragment的时候,会用到切换fragment的,Android fragment .replace()的第一个参数要选对


首先贴一段布局文件 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"      android:background="@drawable/normal_bg" >    <RelativeLayout        android:id="@+id/tab_container"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:background="@drawable/tab_bg"        android:gravity="bottom" >        <ImageView            android:id="@+id/tab_bg_view"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:contentDescription="@null"            android:src="@drawable/tab_select_bg" />        <LinearLayout            android:id="@+id/tab_item_container"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_centerVertical="true"            android:gravity="bottom"            android:orientation="horizontal" >            <ImageView                android:id="@+id/tab_bt_1"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:contentDescription="@null"                android:src="@drawable/tab_icon_01" />            <ImageView                android:id="@+id/tab_bt_2"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:contentDescription="@null"                android:src="@drawable/tab_icon_02" />            <RelativeLayout                android:layout_width="0sp"                android:layout_height="wrap_content"                android:layout_weight="1" >                <ImageView                    android:id="@+id/tab_bt_3"                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:contentDescription="@null"                    android:src="@drawable/tab_icon_03" />                <TextView                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:layout_alignRight="@id/tab_bt_3"                    android:layout_alignTop="@id/tab_bt_3"                    android:background="@drawable/messages_bg"                    android:gravity="center"                    android:text="1"                    android:textColor="@android:color/white" />            </RelativeLayout>            <ImageView                android:id="@+id/tab_bt_4"                android:layout_width="0sp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:contentDescription="@null"                android:src="@drawable/tab_icon_04" />        </LinearLayout>    </RelativeLayout>    <LinearLayout        android:id="@+id/content_container"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_above="@id/tab_container"        android:orientation="vertical" >    </LinearLayout>    <LinearLayout        android:id="@+id/content_container2"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_above="@id/tab_container"        android:orientation="vertical" >    </LinearLayout></RelativeLayout>

主要代码部分:

Fragment f = new Home1Fra();        if (null == mFM)            mFM = getSupportFragmentManager();        FragmentTransaction ft = mFM.beginTransaction();        ft.replace(R.id.content_container, f);        ft.commit();




这时候代码

ft.replace(R.id.content_container, f);会失效,并不会完全真正的替换掉原先布局。

正确的做法是用

FrameLayout布局替换
LinearLayout
来解决,即可完全替换掉。
这样就解决了不能完全替换原先布局带来的苦恼。

0 0
原创粉丝点击