tesfen 2016-08-24 06: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-24 06:30
    关注

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

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

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

报告相同问题?

悬赏问题

  • ¥30 matlab appdesigner私有函数嵌套整合
  • ¥15 给我一个openharmony跑通webrtc实现视频会议的简单demo项目,sdk为12
  • ¥15 vb6.0使用jmail接收smtp邮件并另存附件到D盘
  • ¥30 vb net 使用 sendMessage 如何输入鼠标坐标
  • ¥15 关于freesurfer使用freeview可视化的问题
  • ¥100 谁能在荣耀自带系统MagicOS版本下,隐藏手机桌面图标?
  • ¥15 求SC-LIWC词典!
  • ¥20 有关esp8266连接阿里云
  • ¥15 C# 调用Bartender打印机打印
  • ¥15 我这个代码哪里有问题 acm 平台上显示错误 90%,我自己运行好像没什么问题