为了账号安全,请及时绑定邮箱和手机立即绑定

Fragment向Activity传值时onAttach(context)无效 而废弃的onAttach(activity)有效

http://img1.sycdn.imooc.com//57dd415d0001803b05150282.jpg

上一个方法就报mListener空指针异常,程序也崩了,换成下面一个废弃的方法就正常

正在回答

2 回答

老的onAttach直接在attach的时候把fragment的容器Activity通过参数传递给你了,老的在老师的视频里可以实现。

但是,新的传递给你的是具体的上下文Context,AS这个IDE里面监视器没VS的好用,无法跟你说Context里怎么找Activity,但是,这个传递过来的context参数里面是包含具体的父容器activity的,所以你可以在super.onAttach(context);这句之后,加getActivity()这个方法来获取父容器activity,这样就不会报错了。用老的也可以这么处理。

0 回复 有任何疑惑可以回复我~
#1

慕村5414681

另外补充下,旧的支持到API23好像,所以在这之前的安卓版本都是会调用旧的带activity参数的onAttach,23以上都是调用context的onAttach,另外一个无效。所以出现崩溃主要是onAttach没有被调用。 其次,也Context是Activity的基类,所以在新的onAttach那,可以直接mListener =(MyListener)context;
2018-08-20 回复 有任何疑惑可以回复我~

是这样啊

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第二门课(第1季)
  • 参与学习       111162    人
  • 解答问题       1457    个

本课程由浅入深地带您学会Android的常用控件的开发和使用

进入课程

Fragment向Activity传值时onAttach(context)无效 而废弃的onAttach(activity)有效

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信