2017-03-10 21 views
6

Tôi đã tạo ra một hoạt động (DemoActivity.java) với 2 mảnh vỡ (FragmentOne.javaFragmentTwo.java).tổ chức sự kiện Xe Buýt ở Fragment

tôi đăng ký EventBus trong Hoạt động như thế này EventBus.getDefault().register(this);

và tạo ra một phương pháp suscriber trong Hoạt động:

@Subscriber 
public void abc(String str) { 
    Log.i(TAG,"MainActivity Called !!"); 
} 

Sau đó, tôi gửi một sự kiện từ FragmentTwo.java vào nút bấm EventBus.getDefault().post("");

Kịch bản này hoạt động tốt cho tôi. Nhưng khi tôi tạo cùng một phương thức thuê bao trong FragmentOne.java thì nó không hoạt động. Tại sao?

+1

Bạn cần đăng ký FragmentOne trong EventBus giống như bạn đang đăng ký hoạt động – Avi

+0

bạn đã đăng ký phân đoạn của mình với tư cách là người nhận sự kiện chưa? –

+0

@avi i alreay đã thử như - EventBus.getDefault(). Đăng ký (getActivity()); – sanil

Trả lời

4

Từ câu hỏi của bạn có thể có hai điều đang gây ra vấn đề:

  1. Bạn có thể đã không đăng ký EventBus trong lớp FragmentOne của bạn như bạn đã làm cho lớp DemoActivity của bạn.
  2. Nếu bạn đã đăng ký EventBus trong lớp FragmentOne thì vui lòng kiểm tra xem FragmentOne lớp phân đoạn có còn sống hay ở trạng thái nhận sự kiện khi đăng sự kiện từ lớp FragmentTwo.

Sửa

Như đã thấy từ ý kiến ​​bạn đã đăng ký EventBus của bạn như EventBus.getDefault().register(getActivity()) do này chỉ hoạt động của bạn sẽ được đăng ký. Để đăng ký Fragment, hãy sử dụng EventBus.getDefault().register(this) trong phương thức Fragment.onCreate() của bạn.

+0

yup đã làm nó .. nhưng khi tôi sẽ unregister rằng các mảnh eventbus? – sanil

+0

'onDestroy()' phương thức 'Fragment' – Nitin

Các vấn đề liên quan