从调用的BroadcastReceiver在Android的一个活动的方法方法、BroadcastReceiver、Android

由网友(往里摸قگ)分享简介:下面我创建一个在线应用程序,只依赖于互联网。Here i am creating a online application that depends only on Internet.所以,只要有网络错误就必须通知到,我已经创建了一个接收来电时,网络连接丢失一个BroadcastReciver的user.For(互...

下面我创建一个在线应用程序,只依赖于互联网。

Here i am creating a online application that depends only on Internet.

所以,只要有网络错误就必须通知到,我已经创建了一个接收来电时,网络连接丢失一个BroadcastReciver的user.For(互联网)。

So whenever there is a network error it must notifies to the user.For that i have created a BroadcastReciver that receives call when network connection gets lost(Internet).

这一切工作perfectly.Now我需要的是,我必须从这个广播接收器,在那里我已经创建了一个警报对话呼叫活动的方法。

All this works perfectly.Now what i need is that i have to call a method of Activity from this Broadcast Receiver,where i have created a Alert Dialogue.

我已经阅读stack-overflow.com很多答案,我可以声明静态方法和仅使用活动的名字叫

I have read many answers on stack-overflow.com that i can declare that method static and call by using only Activity name,

例如 MyActivityName.myMethod()

但我不能宣布我的方法静态的,因为我使用的警报对话那里,它显示了我的错误就行,

But i can't declare my method static,because i am using Alert Dialogue there and it shows me error on line,

AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);

,即不能在静态的情况下使用

那么,如何从广播接收呼叫活动的方法(一定不是静态的,不启动该活动)?

So,how can i call a method of Activity(must not static and without starting that activity) from a Broadcast Receiver ?

和我可以从广播接收器目前正在运行得到活动(或片段)的名字?

And can i get Activity(or fragment) name from Broadcast Receiver which currently running ?

推荐答案

试试这个code:

您的BroadcastReceiver类互联网失去类:

your broadcastreceiver class for internet lost class :

public class InternetLostReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
    context.sendBroadcast(new Intent("INTERNET_LOST"));
}
}

在您的活动添加此调用广播:

in your activity add this for calling broadcast:

public class TestActivity  extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    registerReceiver(broadcastReceiver, new IntentFilter("INTERNET_LOST"));
}

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // internet lost alert dialog method call from here...
    }
};

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(broadcastReceiver);
}
}
阅读全文

相关推荐

最新文章