这几天做项目的时候,发现白天黑夜模式切换的时候,应用会崩溃。崩溃日志如下:

Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment xxx.MainPageFragment: could not find Fragment constructorat androidx.fragment.app.Fragment.instantiate(Fragment.java:563)at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57)at androidx.fragment.app.FragmentManager$3.instantiate(FragmentManager.java:390)at androidx.fragment.app.FragmentStateManager.<init>(FragmentStateManager.java:74)at androidx.fragment.app.FragmentManager.restoreSaveState(FragmentManager.java:2452)at androidx.fragment.app.FragmentController.restoreSaveState(FragmentController.java:196)at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:287)at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:115)at com.bangcle.andJni.JniLib1646222368.cV(Native Method)at com.xxx.appbar.BaseBarActivity.onCreate(Unknown Source:18)at com.xxx.appbar.BaseBottomInOutBarActivity.onCreate(BaseBottomInOutBarActivity.java:10)at xxx.services.base.BaseActivity.onCreate(BaseActivity.java:49)at xxx.MainActivity.onCreate(MainActivity.java:50)at android.app.Activity.performCreate(Activity.java:7144)at android.app.Activity.performCreate(Activity.java:7135)at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2931)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3086) at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4823) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4732) at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6718)

看崩溃日志,我们发现是在系统在创建Fragment的时候发生了崩溃。这也是为什么google不推荐我们重写fragment构造方法的原因。

那如何解决这个问题呢?最简单的方式自然是不重写fragment的构造方法就好了。

原构造方法:

 public MainPageFragment(ViewData viewData, ShowCarMainPresenter presenter) {super();this.viewData = viewData;this.presenter = presenter;}

改为

public MainPageFragment() {super();
}

viewData是数据,presenter是执行器。

这样原来的崩溃问题是解决了,但是又带来了新问题,viewData和presenter如何传递到Fragment中呢?由于走的是系统创建fragment的流程,并且是在activity的onCreate方法中执行的,所以我们根本来不及传递viewData和presenter进去。

转念一想,即然不方便主动传递进去,那么我在Fragment创建的时候主动向activity拿可以吗?试了一下,果然可以,代码如下:

@Overridepublic void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);this.viewData = ((MainActivity) getActivity()).getViewData();this.presenter =  ((MainActivity) getActivity()).getMainPresenter();
}

然后完美的解决了这个黑夜白天模式切换,导致崩溃的问题。

解决白天黑夜模式切换导致Fragment崩溃问题相关推荐

  1. 如何解决迅雷插件导致IE10崩溃的问题

    Windows 8里面带的IE10酷不酷? 沉浸式界面果然不同凡响,IE10让人几乎认不出来了!这是微软的浏览器么? 上面这张图是Windows8下Metro UI的新界面IE10,不过当我们切换回传 ...

  2. Android之解决APP奔溃重启导致Fragment白屏问题

    1.问题 问题APP奔溃重启导致依附的Fragment白屏问题 2.分析 app奔溃重启Activity肯定更新了,但是依附在Activity里面的fragment有缓存,用的是以前的activity ...

  3. Android学习笔记-recreate()方法导致fragment重复新建的问题,解决方法

    Android学习笔记-recreate()方法导致fragment重复新建的问题,解决方法 今天修改一个比较奇怪的bug: 在操作一个事件的时候,使用eventbus来监听事件,断点发现有时候是会执 ...

  4. GTASA圣安地列斯大量高清贴图包导致游戏崩溃闪退的解决办法

    GTASA圣安地列斯大量高清贴图包导致游戏崩溃闪退的解决办法 记录博文 情况说明 在安装了很多不同的 HD 纹理包之后(例如美化包)&驾驶或飞行了大约10分钟,游戏导致崩溃.不管用啥 stre ...

  5. win10中谷歌浏览器输入任何字符导致浏览器崩溃的解决方法

    win10中谷歌浏览器输入任何字符导致浏览器崩溃的解决方法 最近在使用谷歌浏览器的时候,偶尔会用百度等查询资料,如果是点击标签页直接跳转不会出现任何问题,但是一旦有输入的时候,不管是在百度等搜索栏中输 ...

  6. goroutine中使用recover,解决协程中出现panic,导致程序崩溃的问题。recover panic 协程的错误处理

    package mainimport ("fmt""time" )//goroutine中使用recover,解决协程中出现panic,导致程序崩溃的问题. f ...

  7. 爬虫 网站服务器瘫痪,如何解决搜索爬虫高频次抓取导致服务器崩溃的问题

    如何解决搜索爬虫高频次抓取导致服务器崩溃的问题 首先声明一点,如果网站能够承受爬虫的高频次访问,那是一件好事,这样有利于网站页面收录,提升网站来自搜索的访问量.但一旦承受不了,我们可以进行如下的操作. ...

  8. vue el-select数据量太大,导致浏览器崩溃解决办法

    下拉数据量太大,浏览器单线程渲染时间较长,会导致浏览器崩溃.为了解决这一问题,可以采用懒加载形式,完美解决 <el-col :span="24"><el-form ...

  9. UITextField限制汉字数量最正确的姿势,解决iOS7下substringToIndex方法导致的崩溃

    UITextField限制汉字数量最正确的姿势,解决iOS7下substringToIndex方法导致的崩溃 参考文章: (1)UITextField限制汉字数量最正确的姿势,解决iOS7下subst ...

  10. Win7下VC6打开文件报错导致其崩溃的解决办法

    原链接:http://club.topsage.com/thread-2280480-1-1.html 根据我之前写的这个文章:Windows 7下载安装 Visual C++ 6.0(VC6) 全程 ...

最新文章

  1. android 多线程下载,断点续传,线程池
  2. python线程池超过最大数量_python自定义线程池控制线程数量
  3. mysql explain 解释
  4. JavaScript基础04【逻辑、复制、关系、相等运算符、Unicode编码表】
  5. Codeforces-gym-101020 problem C. Rectangles
  6. 最好用的枚举多选方法
  7. 本机Ajax异步通信
  8. python语言中strike_Python学习笔记
  9. python实时连接oracle_python连接oracle数据库
  10. IPMP 认证考试知识点
  11. linux内核mtd驱动程序与sd卡驱动程序,Linux内核MTD驱动程序及SD卡驱动程序.doc
  12. UltraCompare v21.00分析
  13. 华为手机的拨号键有大用处,不仅能用来打电话,还有4个隐藏功能
  14. U盘中文件夹变为应用程序exe不能打开怎样修复
  15. 天文竞赛怎么用计算机,师范生教学技能大赛!计算机设计大赛!主持礼仪风采大赛!天文台活动预告!民宿企划竞赛!舞蹈大赛!...
  16. 根据公众号得到公众号二维码
  17. 利用python的爬虫技术爬取百度贴吧的帖子
  18. 网上流量卡这么便宜,线上申请的流量卡有虚标吗
  19. 笨方法学python3怎么样_笨办法学Python3
  20. 《概率论与数理统计》之样本空间和随机事件

热门文章

  1. 物联网安全攻防的“线上幽灵”
  2. 中国齿科粘接剂行业发展趋势及前景动态预测报告2022-2027年
  3. linux roundup函数记录
  4. # Logistic regression中的threshold
  5. xubuntu装macos未能与服务器,macbook 安装ubuntu(Xubuntu)完整攻略
  6. php生成pdf中文断码_php在线生成pdf中文乱码完美解决“ | 学步园
  7. 度歌虎山寨搜索引擎创始人竟是“90后”
  8. 现在骨传导耳机什么牌子最好,最受欢迎的五款骨传导耳机推荐
  9. 京东手机评论文本挖掘与数据分析(Python)
  10. OpenERP/Odoo的架构