前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fragment使用时getArguments报空解决

fragment使用时getArguments报空解决

作者头像
fanfan
发布2022-05-07 14:55:06
5190
发布2022-05-07 14:55:06
举报
文章被收录于专栏:编程思想之路编程思想之路

今天在使用fragment获取到activity的值时遇到一个问题,耽误了好长时间,在此分享给大家

遇到的问题是getArguments为空,

05-21 23:13:51.906 3262-3262/com.fang.zrf.smartlockdemo I/fang: onCreate--->arg:null
05-21 23:13:51.906 3262-3262/com.fang.zrf.smartlockdemo I/fang: getIntentData--->arg:null
05-21 23:13:51.906 3262-3262/com.fang.zrf.smartlockdemo I/fang: initBaseData--->arg:null
05-21 23:13:51.916 3262-3262/com.fang.zrf.smartlockdemo I/fang: initView----arg:null
05-21 23:13:51.926 3262-3262/com.fang.zrf.smartlockdemo I/fang: initData----arg:null
05-21 23:13:51.926 3262-3262/com.fang.zrf.smartlockdemo I/fang: onResume----arg:null
05-21 23:13:51.926 3262-3262/com.fang.zrf.smartlockdemo I/fang: onCreate--->arg:null
05-21 23:13:51.926 3262-3262/com.fang.zrf.smartlockdemo I/fang: initBaseData--->arg:null

百度了下也没找到答案,后来看了看API源码才发现

首先你如果想获取getArguments,那么你所创建的fragment对象必须去调用setArguments方法

对于setArguments()方法官方是这样说的:

 /**
     * Supply the construction arguments for this fragment.  This can only
     * be called before the fragment has been attached to its activity; that
     * is, you should call it immediately after constructing the fragment.  The
     * arguments supplied here will be retained across fragment destroy and
     * creation.
     */
    public void setArguments(Bundle args) {
。。。。
}

大致翻译一下就是这个方法必须也只能在fragment与它的activity绑定之前进行调用,也就是说,当你初始化了fragment对象后和你必须在绑定它和它的activity关系之前去调用它。

但有一点,这是保证你的程序正确,即程序中没有重复的去创建fragment的前提下,否则,你就算刚开始初始化了,再次调用的话还是会报空。

在初始化fragment后,绑定之前,调用setArguments()方法将所要传递的数据传给fragment

Bundle arguments = new Bundle();
        arguments.putString(IntentConstant.KEY_ID,mKeyId);
        arguments.putString(IntentConstant.KEY_ADDR,mKeyAddress);
        mManageKeyInitFragment.setArguments(arguments);

就这样问题OK,完美的解决了

05-21 23:22:36.246 17100-17100/com.fang.zrf.smartlockdemo I/fang: onCreate--->arg:Bundle[{intent_key_address=00, intent_key_id=11}]
05-21 23:22:36.246 17100-17100/com.fang.zrf.smartlockdemo I/fang: getIntentData--->arg:Bundle[{intent_key_address=00, intent_key_id=11}]
05-21 23:22:36.246 17100-17100/com.fang.zrf.smartlockdemo I/fang: initBaseData--->arg:Bundle[{intent_key_address=00, intent_key_id=11}]
05-21 23:22:36.256 17100-17100/com.fang.zrf.smartlockdemo I/fang: initView----arg:Bundle[{intent_key_address=00, intent_key_id=11}]
05-21 23:22:36.266 17100-17100/com.fang.zrf.smartlockdemo I/fang: initData----arg:Bundle[{intent_key_address=00, intent_key_id=11}]
05-21 23:22:36.266 17100-17100/com.fang.zrf.smartlockdemo I/fang: onResume----arg:Bundle[{intent_key_address=00, intent_key_id=11}]
05-21 23:22:36.266 17100-17100/com.fang.zrf.smartlockdemo I/fang: onCreate--->arg:Bundle[{intent_key_address=00, intent_key_id=11}]
05-21 23:22:36.266 17100-17100/com.fang.zrf.smartlockdemo I/fang: initBaseData--->arg:Bundle[{intent_key_address=00, intent_key_id=11}]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档