美文网首页
关于fragment使用遇到的一些坑

关于fragment使用遇到的一些坑

作者: 程序猿的小生活 | 来源:发表于2019-08-10 11:02 被阅读0次

1.经常遇到的getActivity = null的情况?
有的时候我们在两个fragment之间进行切换的时候,fragment很容易崩溃,这是因为frament销毁了,getActivity还在使用导致的,修改办法:
(1)使用application 的context

public class MyApplication extends Application {
   private static MyApplication instance;
 @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
}
public static MyApplication getInstance() {
        return instance;
    }


}

(2)fragment 中 context使用 举个例子

   if(getActivity()==null){
            inflater = LayoutInflater.from(MyApplication.getInstance());
        }else {
            inflater = LayoutInflater.from(getActivity());
        }


2.切记使用在Application类定义全局的集合,这样在fragment切换的时候很容易造成数据莫名其妙的重复,而且是时而正常,时而不正常,不建议这样写集合

public class MyApplication extends Application {
  public static ArrayList<hysliebiaoBean> hyslbList = new ArrayList<>();
}
public class DemoFragment extends Fragment {
MyApplication.hyslbList//不建议这样写
}

3.No view found for id xxxx for fragment xxxx 问题的方案
这个问题原因有好多种,但是我的原因是这样的: 凡是在fragment中使用fragment的,
子fragment一般这样写

  getFragmentManager().beginTransaction().replace(R.id.daibanfl, daiBanShenHeFragment).commit();中getFragmentManager()改为 
  getChildFragmentManager()

4.凡是跟UI相关的,都应该使用Activity做为Context来处理;其他的一些操作,Service,Activity,Application等实例都可以,当然了,注意Context引用的持有,防止内存泄漏。
能使用Application的context的时候尽量使用Application的,减少内存开支。

相关文章

网友评论

      本文标题:关于fragment使用遇到的一些坑

      本文链接:https://www.haomeiwen.com/subject/wknljctx.html