Activity加载Fragment有两种方式:
1.一种是静态加载Fragment
2.一种是动态的加载Fragment
这两种方式个人比较喜欢动态加载,这样的话比较方便fragment的替换添加和删除
静态加载Framgment
<LinearLayout
android:id="@+id/haha"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/hehe"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="lyh.myapplication.f1"/>
</LinearLayout>
静态加载的‘坑’
getFragmentManager().beginTransaction().replace(R.id.haha,f).commit();
直接替换的话,嘿嘿,不行
getFragmentManager().beginTransaction().remove(getFragmentManager().findFragmentById(R.id.hehe));
getFragmentManager().beginTransaction().replace(R.id.haha,Fragment).commit();
想这么删除了在替换,哈哈,不存在的,只支持动态的
3.最终解决办法
LinearLayout haha=findViewById(R.id.haha);
haha.removeView(findViewById(R.id.hehe));
没错,就是把整个静态加载来的fragment直接删掉
getFragmentManager().beginTransaction().replace(R.id.haha,Fragment).commit();
成功
动态加载
已经在上面了