2016-06-22 17 views
0

erreicht Problem:
Für einige Kommunikationsszenarien verwende ich EventBus. Ich habe ein Ereignis, das bereits erfolgreich ausgelöst und von verschiedenen Komponenten in meiner App abonniert wurde. Jetzt brauche ich eine activity, um dieses Ereignis zu abonnieren. Leider wird es nicht erreicht.EventBot: abonnierende Aktivität wird nicht von Ereignis

Frage:
Wie kann ich erreichen, dass die activity das Ereignis richtig funktioniert abonnieren, entweder? Ist das Problem bei der Registrierung der activity?

Hinweis:
Ich habe die post gefunden onStart() und OnStop() Ereignisse zu verwenden, schlägt vor.

meine Aktivitätsklasse:

public class MachineActivity extends AppCompatActivity{ 

    (...) 

    @Override 
    protected void onStart() { 
    super.onStart(); 
    EventBus.getDefault().register(this); 
    } 

    @Override 
    protected void onStop() { 
    super.onStop(); 
    EventBus.getDefault().unregister(this); 
    } 

    @Subscribe(threadMode = ThreadMode.MAIN) 
    public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) { 
    // Do something here. 
    } 

    (...) 
} 

EventBus Klasse:

public class IntentChangeByUser { 

    int position; 
    int value; 

    public IntentChangeByUser(int position, int value){ 
    this.position = position; 
    this.value = value; 
    } 

    public int getPosition() { 
    return position; 
    } 

    public int getValue() { 
    return value; 
    } 
} 

Antwort

1

sein könnte, weil Sie die falsche Art und Weise haben dann in onStop() EventBus deregistrieren.
Änderung dieser:

@Override 
public void onStart() { 
    super.onStart(); 
    EventBus.getDefault().register(this); 
} 

@Override 
public void onStop() { 
    EventBus.getDefault().unregister(this); 
    super.onStop(); 
} 

Dann in Ihrer Subscriber Aktivität stellen Sie sicher, empfangen Ereignis dort:

@Subscribe(threadMode = ThreadMode.MAIN) 
public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) { 
    // Do something here. 
    Log.d("Activity", "IntentChangeByUser Event received"); 
}