2017-11-26 2 views
1

Ich möchte Eventbus in meine App verwenden. für hinzufügen, dass ich EventBus lib meine gradle.then habe ich eine Klasse wie folgt erstellt:Abonnent wird keine Nachricht von eventBus

public class UserEvent { 

private User eUser; // esup user model 
private String domain; 
private String securitySrv; 
private Cookie cookie; 
private int totalUsersSecurity; 
private ExecutorService executorService; 
// constructor and getter 

dann in dem Haupt Fragment habe ich diese Zeilen hinzugefügt und schließlich habe ich meine Nachricht geschrieben:

UserEvent userEvent = new UserEvent(eUser, domain, securitySrv, cookie, 
totalUsersSecurity, executorService); 
EventBus.getDefault().post(userEvent); 

in Hauptfragment habe ich ViewPager, dass dieser Pager ein anderes Fragment namens AllUsersFragment geladen hat.

In AllUsersFragment ersten habe ich registriert EventBus:

EventBus bus = EventBus.getDefault(); 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_layout, container, false); 
    bus.register(this); 
    return rootView; 
} 

und dann schrieb ich diese Methode:

@Subscribe 
public void onEvent(UserEvent event) { 
    securitySrv = event.getSecuritySrv(); 
    cookie = event.getCookie(); 
    totalUsersSecurity = event.getTotalUsersSecurity(); 
    executorService = event.getExecutorService(); 

} 

in meinen Lebenslauf Methode mag ich UserEvent von EventBus durch den Konstruktor in einer anderen Klasse zu übergeben :

@Override 
public void onResume() { 
    super.onResume(); 
    paginator = new Paginator(getContext(),totalUsersSecurity,executorService); 

} 

aber totalUsersSecurity und executorServ Eis sind null? während diese Variablen im Hauptfragment gefüllt wurden.in Debug-Mod bei Android Studio wird diese public void onEvent(UserEvent event) nicht nie aufgerufen. danke für die hilfe?

Ich bin mit Android Studio 3 mit gradle:3.0.0'

Antwort

0

Schließlich ich dieses Problem beheben. nach eventBus wiki

Ich benutze nur Sticky Events .now ich meine Post erhalten

0

haben Sie auf OnStart() für die Veranstaltung registriert

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

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

Ich habe bei onCreateView registriert() –

Verwandte Themen