解决activity已经销毁,Fragment的跳转问题

来源:互联网 发布:<img src=javascript: 编辑:程序博客网 时间:2024/05/01 16:58

以下全局变量类

> package com.app.kuwomusic.value;> > import android.support.v4.app.FragmentManager;> > import com.app.kuwomusic.MainActivity;> > /**  * Created by Administrator on 2015/10/10.  */ > public class GolobValue {>     /**>      * 全局Activity>      */>     public static MainActivity MAIN;>     /**>      * 碎片管理者>      */>     public static FragmentManager MANAGER; }

以下是变量赋值的地方

 @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initGoloValue();        loadSplash();        Message msg=Message.obtain();        handler.sendMessageDelayed(msg,3000);    } /**     * 初始化全局变量     */    private void initGoloValue() {        GolobValue.MAIN=this;        GolobValue.MANAGER=getSupportFragmentManager();    }

以下是跳转逻辑

  * 替换当前FRAgment     * @param newFragment 要替换的Fragment     * @param nowFragment 被替换的Fragment     * @param bundle 携带的数据     * @param addStack 是否加入回退栈     */    public static void changeFragment(Fragment newFragment,Fragment nowFragment,Bundle bundle,boolean addStack){        if(newFragment==null){            return;        }        if(GolobValue.MANAGER==null){            return;        }        FragmentTransaction ft=GolobValue.MANAGER.beginTransaction();        if(ft==null){            return;        }        ft.replace(R.id.main,newFragment);        if(bundle!=null){            newFragment.setArguments(bundle);        }        if(addStack){            ft.addToBackStack(null);        }        //ft.setCustomAnimations();        ft.commitAllowingStateLoss();    }

以下是解决方法,在MainActivity中的销毁代码中取消全局变量的赋值

  @Override    protected void onDestroy() {        GolobValue.MAIN=null;        GolobValue.MANAGER=null;        super.onDestroy();    }
0 0