fragment的总结

说明:前阵子使用到fragment时又疑惑,后来找资料理解,终于解决了问题,但是后来又碰到fragment,又有一样的问题出现,时间太长了,记不住,这次受教训了,老老实实,踏踏实实地做好笔记吧。

fragment在跳转后,上一个fragment,仍然在界面中,2个fragment就交替,相互干扰了。

解决:在main.xml中,要事先给fragment一个空间,我用的是,相关的配置属性:

FrameLayout 
        android:layout_height="120dp"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:id="@+id/MainFramelayout"<!-id为后面跳转id参数->

id是自定义的。

然后在MainActivity的oncreate函数中,写入

public class Main extends Activity{
    private FragmentManager manager;
    private FragmentTransaction ft;
    @TargetApi(Build.VERSION_CODES.HONEYCOMB) @SuppressLint("NewApi") @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);//设置好main布局
        manager=getFragmentManager();
        ft=manager.beginTransaction();
        Fragment1 f1=new Fragment1();//想要显示的fragment界面确定
        ft.replace(R.id.MainFramelayout, f1);//执行切换显示。 android:id="@+id/MainFramelayout"<!-id为此id参数->
        ft.commit();//提交

其中R.id.MainFramelayout就是我们事先设定好的空间,Fragment1 f1为我们想要跳转到的fragment。

然后在点击事件中在设置

FragmentManager manager;
        FragmentTransaction ft;
        manager=getFragmentManager();
        ft=manager.beginTransaction();
        Fragment f=new Fragment1();
        if(f1!=null){
            ft.remove(f1);//此时f1肯定是存在的,如果这里不做处理,那么f和f1的界面将会重合显示,所以需要移除已经显示的f1,这里的处理非常精彩。
            ft.replace(R.id.MainFramelayout, f);
            ft.commit();
        }

这个思路是:为fragment设置空间,在替换时,一定是空间和fragment之间替换,而不是fragment之间的替换。

猜你喜欢

转载自blog.csdn.net/jian11058/article/details/79401440