2 chenxin oo chenxin_oo 于 2016.05.12 10:43 提问

内部广播类怎么调用此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的组件 导致空指针异常,那要怎么能调用这个方法呢 。。。。。。。求拯救

5个回答

mybooby
mybooby   2016.05.12 11:21
已采纳

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

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

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

Android在Adapter里面调用Activity的方法/变量
Android在Adapter里面调用Activity的方法/变量
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

mybooby
mybooby   2016.05.12 10:59

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

MainActivity.this.update();

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

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

l_vaule
l_vaule   2016.05.12 11:10

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

l_vaule
l_vaule 回复l_vaule: 哦,静态注册。。
一年多之前 回复
l_vaule
l_vaule 不明白你的怎么会找不到。
一年多之前 回复
chenxin_oo
chenxin_oo 内部广播类 一定要静态的不然找不到广播 ,
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!