全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android getActivity()为空的问题解决办法

Android getActivity()为空的问题解决办法

  在开发项目中有时会碰到getActivity函数为空的情况,    导致apk空指针崩溃问题,  看代码逻辑没有明显的原因。

       如果看Activity.Java、FragmentActivity.java的源码就可以找到原因。 当activity实例在后台时, 系统在回收资源时很可能回收掉Activity,  并在onSaveInstanceState函数里保存fragment的状态, 再次打开该Activity时, 在onCreate方法里取出bundle里的fragment状态, 但这时fragment对应的Activity早就不在了, 所以getActivity为空。

摘自FragmentActivity.java:       

 protected void onCreate(Bundle savedInstanceState) {
         .......
         if (savedInstanceState != null) {
             Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);
             mFragments.restoreAllState(p, nc != null ? nc.fragments : null);
         }

         mFragments.dispatchCreate();
     }

     protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Parcelable p = mFragments.saveAllState();
       if (p != null) {
          outState.putParcelable(FRAGMENTS_TAG, p);
        }
     }

从源码可以看出解决方案: 1、  覆盖onSaveInstanceState函数, 不保存到bundle; 2、  覆盖onCreate方法, 删除FRAGMENTS_TAG参数。(注意:Activity和FragmentActivity对FRAGMENTS_TAG的定义不同

     例如: 

public class TestActivity extends FragmentActivity {     
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           if (savedInstanceState != null) {
               savedInstanceState.remove("android:support:fragments");  //注意:基类是Activity时参数为android:fragments, 一定要在super.onCreate函数前执行!!!
           }
           super.onCreate(savedInstanceState);
          ...
       }

       //或者
       protected void onSaveInstanceState(Bundle outState) {
           //super.onSaveInstanceState(outState);  //注释掉该方法, 即不保存状态
       }
   

以上就是Android getActivity()为空的问题解决办法的讲解,如有疑问请大家留言或到本站社区讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # getActivity()为空  # getActivity()  # null  # 解决办法  # Android中getActivity()为null的解决办法  # 为空  # 如有  # 中有  # 并在  # 请大家  # 希望能  # 很可能  # 可以看出  # 谢谢大家  # 开发项目  # 就可以  # 不在了  # 不保存  # 或到  # 即不  # 里取出  # 台时  # fragment  # onSaveInstanceState 


相关文章: html制作网站的步骤有哪些,iapp如何添加网页?  建站主机类型有哪些?如何正确选型  建站之星云端配置指南:模板选择与SEO优化一键生成  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  怀化网站制作公司,怀化新生儿上户网上办理流程?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  PHP 500报错的快速解决方法  佛山企业网站制作公司有哪些,沟通100网上服务官网?  移民网站制作流程,怎么看加拿大移民官网?  设计网站制作公司有哪些,制作网页教程?  建站之星如何修改网站生成路径?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  哈尔滨网站建设策划,哈尔滨电工证查询网站?  如何构建满足综合性能需求的优质建站方案?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  郑州企业网站制作公司,郑州招聘网站有哪些?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  如何在Windows 2008云服务器安全搭建网站?  详解jQuery中基本的动画方法  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  定制建站策划方案_专业建站与网站建设方案一站式指南  常州企业网站制作公司,全国继续教育网怎么登录?  如何在万网ECS上快速搭建专属网站?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  在线制作视频的网站有哪些,电脑如何制作视频短片?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  建站之星安装后如何配置SEO及设计样式?  如何在万网自助建站平台快速创建网站?  javascript中对象的定义、使用以及对象和原型链操作小结  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  外贸公司网站制作哪家好,maersk船公司官网?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  太原网站制作公司有哪些,网约车营运证查询官网?  贸易公司网站制作流程,出口贸易网站设计怎么做?  定制建站方案优化指南:企业官网开发与建站费用解析  建站之星后台密码如何安全设置与找回?  盘锦网站制作公司,盘锦大洼有多少5G网站?  学校为何禁止电信移动建设网站?  建站之星展会模版如何一键下载生成?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  制作农业网站的软件,比较好的农业网站推荐一下?  如何通过.red域名打造高辨识度品牌网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。