ho iniziato ad usare OTTO da Square ieri, finora ho avuto un buon inizio.OTTO e frammenti in altri activitys
Otto grandi opere fuori dalla scatola quando si hanno le Frammenti già ospitato in un FragmentActivity e hai solo bisogno di comunicare tra Frammento ospitato da quel FragmentActivity.
Quando ospitato già, il vostro #onResume() Methode viene chiamato e il frammento può registrarsi sul EventBus:
@Override
public void onResume()
{
super.onResume();
BusProvider.getInstance().register(this);
}
mio problema:
il frammento che è incorporato in un più L'attività che dovrebbe ricevere l'evento tramite Eventbus è la seguente:
public AnotherFragmentHostedInSomeActivity extends Fragment
{
.....
@Subscribe
public void onSomethingHappend(final Event event)
{
final SomeObject deliveredObject = event.getSomeObject();
Ma sembra che le cose sono ancora complicate quando si desidera chiamare un'altra attività che ospita un frammento come questo Codice non:
public class SomeFragmentSendingDataToAnotherFragment extends Fragment
{
...
private void sendData()
{
final Intent intent = new Intent(applicationContext, SomeActivity.class);
applicationContext.startActivity(intent);
BusProvider.getInstance().post(new Event(someObject));
Come si può già vedere, questo codice è poco raccomandabile. Avvio di un'attività e invio di dati al frammento ospitato da tale attività non può funzionare a causa del ciclo di vita. Quindi l'attività viene creata e anche le frazioni. Ad un certo momento viene richiamato il metodo onResume per consentire a Fragement di registrarsi tramite @Subscribe. Ma tutto questo succede dopo il l'evento è già stato pubblicato tramite l'EventBus. Quindi il frammento di interrest non viene mai chiamato da EventBus.
Qualcuno sa come farlo in modo intelligente?
Alcune informazioni extra: Ieri ho avuto un bel playaround con OTTO. Il problema è disponibile solo nel mio progetto quando ho bisogno di inviare dati a un'altra attività, che nel mio caso accade sempre quando l'APP funziona su uno smartphone, non su un tablet. Prima di inviare tutti i dati tramite Intent e Parcelable. Otto ridurrebbe la necessità di scrivere oggetti Parcleable, quindi mi piacerebbe andare in questo modo.
Grazie per le risposte
Grazie Eric per averlo chiarito. Ho avuto un'impressione diversa di ciò che il Bus può fare. Il Lifecycle semplicemente non gioca lì. Quindi ho ancora bisogno di sapere se il mio frammento è in una sorta di 'modalità' Tablet o telefono per sparare all'evento. – Kitesurfer