2016-09-20 11 views
0

このコードで何が問題になるのでしょうか。なぜAndroidのLocalBroadcastManagerが実行されていないのですか?

リスナーは、活動ののonCreateである:

private BroadcastReceiver receiver; 
private Context context; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 
    context = getApplicationContext(); 

    receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      Log.e("MAIN onCreate: ", "It is never shown."); 

     } 
    }; 
} 

レジスタは、活動のonResumenである:

@Override 
protected void onResume() { 
    super.onResume(); 
    registerReceiver(receiver, new IntentFilter("receiveMyService")); 
} 

送信者がボタンであると私はログを見ることができますテストの値がfalseの場合、完全に動作します。

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     Intent intent = new Intent("receiveMyService"); 
     Boolean test = LocalBroadcastManager.getInstance(context).sendBroadcast(intent); 
     Log.e("Button", "It works but test is always false: " + test); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

BroadcastReceiver - onReceiveは決して動かない?

+0

ポスト完全なコード –

答えて

1

BroadcastReceiverないLocalBroadcastReceiver
この置き換えるあなたを登録しているので:この

LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter("receiveMyService")); 
+0

はまだ機能していないと

registerReceiver(receiver, new IntentFilter("receiveMyService")); 

を。 – andres83

関連する問題