android.support.v4.app.Fragment$InstantiationException问题解决

来源:互联网 发布:mysql还原数据库 编辑:程序博客网 时间:2024/05/02 00:51
今天我就利用上一篇介绍的CrashHandler捕捉到了一个异常,这个异常可能已经潜伏了很久,今天终于发现了.
   通过在网上查发现了一个解决办法,修改并等待验证中,文章内容如下:
   

程序开发中遇到了android.support.v4.app.Fragment$InstantiationException这个bug,给出的提示是:

make sure class name exists, is public, and has an empty constructor that is public。看了下自己写的代码,重写了一个带参数的构造参数用来new Fragment的时候传值,那构造的时候肯定不走默认构造了。google了下,StackOverflow上给出了解决的办法。

写一个静态方法来实例化自己的Fragment。代码如下:

public static final Fragment newInstance(String key){

Fragment fragment = new RealtimeSearchFragment();

Bundle bundle = new Bundle();

bundle.putString("key", key);

fragment.setArguments(bundle);

return fragment;

}

在自己的Activity里这样获取这个Fragment

Fragment realtimeSearchFragment = RealtimeSearchFragment.newInstance(realSearchKey);

在自己的Fragment onCreateView方法里获取Activity传过来的值:

getArguments().getString("key")

这样就ok了。


我的记录:本人看了下自己的代码,我把Fragment的构造方法,写成private了,这里的调用逻辑要熟悉哦!

0 0
原创粉丝点击