2016-02-08 17 views
8

Tak więc dowiedziałem się o module eventbus Green Robots. Postępuj zgodnie z instrukcjami na tej stronie, aby spróbować uruchomić: http://greenrobot.org/eventbus/documentation/how-to-get-started/Eventbus GreenRobota nie widzi adnotacji "brak publicznych metod"

Wydaje się być dość proste.

umieścić w odpowiednim kodem, ale kiedy uruchomić na urządzeniu mam awarię:

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

pierwszych kilku liniach mojej klasy wyglądać następująco:

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(); 
    } 
    . 
    . 
    . 

on/wydaje/Adnotacja tam jest. Kompilacja odbywa się bez ostrzeżenia. Używam wersji 3.0.0 określonej w pliku gradle ...

Co może być nie tak? (RTFM z wdzięcznością zaakceptował, po prostu powiedz, gdzie jest FM z odpowiednim artykułem.)

Dzięki!

-Ken

Odpowiedz

7

Doh! Wybrałem opcję @Subscribe zamiast Green Robot's.

import com.google.common.eventbus.Subscribe; 

zamiast

import org.greenrobot.eventbus.Subscribe; 

Błąd prawdopodobnie powinien przeczytać "metoda nie na wdrażaniu com.greenrobot.eventbus @Subscribe dopiskiem".

+3

Dla mnie było to z powodu ProGuard. Naprawiono tu: http://greenrobot.org/eventbus/documentation/proguard/ – Yani2000