tesfen 2016-08-23 22:08 采纳率: 0%
浏览 1616
已采纳

fragment调用activity中的方法出现异常

想把activity中接收数据的变量intRate传值给fragment,但总是会出现错误,下面将代码和错误贴出来

 activity中用broadcastReceiver已经成功接收到数据并将数据的类型转换成int
 intRate = Integer.parseInt(stringRate);
 然后写了两个方法,方便在fragment中调用
 public int getIntRate(){
     return intRate;
 }
 public void setIntRate(int rate){
     this.intRate = rate;
 }
 在fragment中
 private RateActivity mRateActivity;
 在onCreateView中
 int intRate = mRateActivity.getIntRate();

运行程序,就会出现如下错误:

 java.lang.NullPointerException:Attempt to invoke virtual method 'int com.example.RateActivity.getIntRate()' on a null object references at ...
  • 写回答

4条回答 默认 最新

  • 普通网友 2016-08-23 22:30
    关注

    从Activity传值到Fragment的正确方法:
    1.在Fragment创建时传入,通过setArgument方法。
    2.在Fragment创建完成,其他时候传入。最直接的方法就是在Fragment中写方法暴露给Activity,然后由Activity**主动调用**Fragment的方法传值。另外,如果不是这个值必须经由Activity,那么直接在Fragment中定义广播接收器最好。

    根据你的描述,我基本可以判定,空指针异常产生的原因是,Activity与Fragment的“绑定”并没有完成,这个时候你就先调用了Activity的方法,然而此时你得到的Activity是空的。请参考上述我说的解决方案。如果还有不懂的,请继续追问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部