Я хочу отправить сообщение от Fragment
к Activity
(не от Fragment
родителя Activity
, а просто от другого).
На самом деле я делаю то же самое с Service
на тот же Activity
, и это прекрасно работает.
Это мой код:
Fragment
:
private void sendBroadcastMessage() {
Intent intent = new Intent("my_event");
// add data
intent.putExtra("message", "test");
LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
}
Activity
:
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Extract data included in the Intent
String message = intent.getStringExtra("message");
}
};
@Override
protected void onPause() {
// Unregister since the activity is not visible
LocalBroadcastManager.getInstance(this).unregisterReceiver(myReceiver);
super.onPause();
}
@Override
protected void onResume() {
super.onResume(); LocalBroadcastManager.getInstance(this).registerReceiver(myReceiver, new IntentFilter("my_event"));
}
Я только что просмотрел этот замечательный пост, но он работает только с Service
по Activity
Я думаю, что это как-то связано с Context
из Fragment
, возможно, getActivity()
не совсем правильный путь...
Любые идеи? Спасибо.
Activity
не будет активен во время трансляции. Вам придется использовать какой-то другой метод для передачи ваших данных. - person Mike M.   schedule 19.05.2016LocalBroadcastManager
? - person Ale   schedule 19.05.2016LocalBroadcastManager
, чтобы предложить собственную версию прикрепляемых трансляций. Во всяком случае, вы можете использовать некоторую форму постоянного хранилища для хранения данных до тех пор, пока вы не запустите другойActivity
, или хранить их в своемService
до тех пор, пока они не потребуются другомуActivity
, или использовать шину событий, которая предлагает фиксированные события и т. д. - person Mike M.   schedule 19.05.2016