内部广播类怎么调用此activity类里面得方法

我在activity里面定义了一个内部广播类 静态注册 ,我想调用activity的方法

``` public static class RepeatReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "定时刷新", Toast.LENGTH_SHORT).show();
        new MainActivity().update();
    }
}
一直报错activity空指针异常 求大神指点 一共就这些分了求指点

错误的原因是我实例化activity调用的你方法里面有activity的组件 导致空指针异常,那要怎么能调用这个方法呢 。。。。。。。求拯救

4个回答

在activity中动态注册该广播
BroadcastReceiver mReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        // TODO Auto-generated method stub
        MainActivity.this.update();
    }

};
chenxin_oo
dusmit 解决了在activity 声明一个静态instance方法 在oncreate初始化就可以在其他类调用activity的方法了
接近 4 年之前 回复
chenxin_oo
dusmit 回复花花花无缺: 不能封装啊,。。里面有activity控件,还是没解决动态注册广播可以解决 可是要让静态注册,。。。。。。
接近 4 年之前 回复
mybooby
花花花无缺 那你就不要把这个update函数定义到activity中,可以封装起来,在广播中调用
接近 4 年之前 回复
chenxin_oo
dusmit 动态注册的话我的应用退出 广播就停止了啊 。。还有别的方法吗
接近 4 年之前 回复

不明白为何要new一个实例出来

MainActivity.this.update();

chenxin_oo
dusmit 回复花花花无缺: 怎么定义啊 一点头绪都没有
接近 4 年之前 回复
mybooby
花花花无缺 回复yt-zhai: 要调用activity方法的话,你定义一个匿名内部类不就行了?
接近 4 年之前 回复
chenxin_oo
dusmit 我这是内部广播类是静态方法 这样调用会报错啊,。错误的原因是我实例化activity调用的你方法里面有activity的组件 导致空指针异常,那要怎么能调用这个方法呢 。。。。。。。求拯救
接近 4 年之前 回复

我activity里面有一个方法 我就想知道广播接收器怎么调用activity的方法 Orz

你为什么要把广播定义成静态的呢。

l_vaule
l_vaule 回复l_vaule: 哦,静态注册。。
接近 4 年之前 回复
l_vaule
l_vaule 不明白你的怎么会找不到。
接近 4 年之前 回复
chenxin_oo
dusmit 内部广播类 一定要静态的不然找不到广播 ,
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问