2016-09-20 2 views
0

Я не понимаю, что не так с этим кодом.Почему LocalBroadcastManager Android не работает?

Слушатель находится в 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")); 
} 

Отправитель находится в одной кнопки, и я могу видеть Вход работает отлично, но со значением теста как ложным:

@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
заменить это:

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

с этим

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

пока не работает. – andres83

Смежные вопросы