Android fragment.replace()第一个参数不能真正替换的解决方法
2016-08-08 15:55
495 查看
在用tabhost切换fragment的时候,会用到切换fragment的,Android fragment .replace()的第一个参数要选对
首先贴一段布局文件
主要代码部分:
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);会失效,并不会完全真正的替换掉原先布局。
正确的做法是用
首先贴一段布局文件
<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
来解决,即可完全替换掉。
这样就解决了不能完全替换原先布局带来的苦恼。
相关文章推荐
- android switch不能使用参数String,View等类的解决方法
- Android解决Fragment使用replace方法重叠问题
- 解决replace()方法只能替换第一个字符
- [Android]Fragment加载替换add,show,hide,replace方法
- android中fragment出现replace方法参数不匹配
- Android 导入android源码有错,R.java文件不能自动生成解决方法
- 【转】解决javascript中replace只能替换第一个
- android 模拟器不能上网解决方法
- 导入android源码有错,R.java文件不能自动生成解决方法
- 解决Android中Fragment调用startactivityforresult不能返回结果的问题
- SQL中函数 replace 的参数1的数据类型ntext无效的解决方法
- 真正的JQuery.ajax传递中文参数的解决方法
- android模拟器中,不能将文件拷贝到的/system分区的原因,以及自动化解决方法
- 导入android源码有错,R.java文件不能自动生成解决方法
- 导入android源码有错,R.java文件不能自动生成解决方法
- 这才是真正的JQuery.ajax传递中文参数的解决方法
- 关于Oracle10g二进制参数文件损坏不能启动Oracle实例的解决方法
- Android adb 不能通过网络调试的解决方法
- 使用Arcgis tools fix后Android不能生成Apk包异常解决方法
- 关于Android不能正确发送User-Agent的解决方法