2017-02-16 55 views
0

这不起作用,我从来没有在接收器中接收消息。我一直在工作数小时。我想要做的是使用LocalBroadcastManager没有活动使用另一个AppContext类。使用LocalBroadcastManager而不使用其他类的活动

类1

import android.content.Context; 

public class AppContext extends Application { 

    private static AppContext instance; 

    public AppContext() { 
     instance = this; 
    } 

    public static Context getContext() { 
     return instance; 
    } 

} 

类2

@Override 
public void onResume() { 

    receiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      //receive your message here 

      String message = intent.getStringExtra("message"); 
      Log.d("receiver", "Got message: " + message); 

      Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show(); 

     } 

    }; 

    LocalBroadcastManager.getInstance(AppContext.getContext()).registerReceiver(receiver, 
      new IntentFilter("custom-event-name")); 

CLASS3

   Log.d("sender", "Broadcasting message"); 
       Intent intent = new Intent("custom-event-name"); 
       // You can also include some extra data. 
       intent.putExtra("message", "99999"); 
       LocalBroadcastManager.getInstance(AppContext.getContext()).sendBroadcast(intent); 

回答

1

我也有同样的问题。 请勿更改class3中的任何内容。我认为它是完美的。 在class2中,创建一个扩展BroadcastReceiver的内部类。

private class Class2Receiver extends BroadcastReceiver 
{ 
     @Override 
     public void onReceive(Context context, Intent intent) 
{ 
      Class2.this.class2Refresh(); 
     } 
    } 

// class2Refresh():在thismethod

这里收到你的信息在Class2中,的onResume()方法,实例如下:

Class2 class2Rec=new Class2.Class2Receiver(); 
     LocalBroadcastManager.getInstance(getContext()).registerReceiver(class2Rec,new IntentFilter("custom-event-name")); 
     class2Refresh(); 

让我知道,如果这有助于出!

相关问题