2016-02-08 10 views
8

Quindi, ho scoperto il modulo Eventbus dei Green Robots. Seguito le istruzioni su questa pagina per cercare di farlo funzionare: http://greenrobot.org/eventbus/documentation/how-to-get-started/L'eventbus di GreenRobot non può visualizzare annotazioni, "nessun metodo pubblico"

Sembra abbastanza semplice.

ho messo nel codice appropriato, ma quando viene eseguito su un dispositivo ottengo un incidente:

org.greenrobot.eventbus.EventBusException: Subscriber class com.crowdlab.activities.LoadingActivity and its super classes have no public methods with the @Subscribe annotation. 

Le prime righe del mio sguardo di classe come questo:

public class LoadingActivity extends BaseActivity implements AlertDialogButtonListener { 
    AlertDialog mDialog = null; 
    AlertDialog mPushDialog = null; 

    @Subscribe 
    public void onMessageEvent(MessageEvent event){ 
     Toast.makeText(this, "From Loading "+event.message, Toast.LENGTH_SHORT).show(); 
    } 

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

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

E/sembra/l'annotazione è lì. La compilazione avviene senza neanche un avvertimento. Sto usando la versione 3.0.0 come specificato nel file gradle ...

Quindi cosa potrebbe essere sbagliato? (RTFM ha accettato con gratitudine, basta dire dove si trova l'FM con un articolo pertinente.)

Grazie!

-Ken

risposta

7

Doh! Ho scelto @Subscribe di Google piuttosto che Green Robot's.

import com.google.common.eventbus.Subscribe; 

piuttosto che

import org.greenrobot.eventbus.Subscribe; 

L'errore dovrebbe probabilmente letto "nessun metodo di attuazione del com.greenrobot.eventbus @Subscribe annotazione".

+3

Per me è stato a causa di ProGuard. La correzione era qui: http://greenrobot.org/eventbus/documentation/proguard/ – Yani2000

Problemi correlati