2016-09-20 5 views
0

이 코드에 어떤 문제가 있는지 알 수 없습니다.Android의 LocalBroadcastManager가 실행되지 않는 이유는 무엇입니까?

리스너 활동하지 OnCreate이다 레지스터가 활동 onResumen에

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."); 

     } 
    }; 
} 

:

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

송신자 버튼이고 I는 로그 볼 수 test의 값을 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