私はEventBusのAndroidの絶対的な基本実装を実装しようとしています。シンプルEventBus - 登録者がいません登録
activity 1
でユーザが入力したコンテンツを簡単にしようとしていますが、その代わりに私はイベントバスを使ってオブジェクト全体を次のアクティビティに投稿しています - activity 2
。 私は正確に与えられたガイドラインに従っています:
PART 1: POJO
public class StudentEvent {
public final String registrationNumber ;
public final String name ;
public final String course ;
public final String branch ;
public StudentEvent(String registrationNumber, String name, String course, String branch) {
this.registrationNumber = registrationNumber;
this.name = name;
this.course = course;
this.branch = branch;
}
public String getRegistrationNumber() {
return registrationNumber;
}
public String getName() {
return name;
}
public String getCourse() {
return course;
}
public String getBranch() {
return branch;
}
}
PART 2: Subscription in the second activity
EventBus.getDefault().register(this); //onCreate
EventBus.getDefault().unregister(this); //onDestroy
@Subscribe
public void eventReceiver(StudentEvent studentEvent){
tvRegistrationNumber.setText(studentEvent.getRegistrationNumber());
tvName.setText(studentEvent.getName());
tvBranch.setText(studentEvent.getBranch());
tvCourse.setText(studentEvent.getCourse());
}
PART 3: Post the event
StudentEvent studentEventObject = new StudentEvent(
etRegistrationNumber.getText().toString(),
etName.getText().toString(),
etCourse.getText().toString(),
etBranch.getText().toString()) ;
EventBus.getDefault().post(studentEventObject);
私はエラーを取得:
D/EventBus: No subscribers registered for event class co.swisdev.abhinav.eventbustesting.StudentEvent
D/EventBus: No subscribers registered for event class org.greenrobot.eventbus.SubscriberExceptionEvent
私は何を失っていますか?
同じクラスでサブスクリプションを作成すると機能します。
正解はなく、偉大な答えであることをもう少し肉付けする必要があります。 Activity Lifecycleを指し、これがリモートでもEventBusの正しいアプリケーションでない理由を説明することができます。 – 323go
私がしなければならない最高の修正は何ですか? 私は意図を作ってEventBusにイベントを投稿すべきですか? @ 323go –
@AbhinavJordiieDasこれは、EventBusが一般的に使用されているものではありません。一般に、EventBusは、既にアクティブなアクティビティまたはフラグメントの更新されたデータを受け取るために使用されます。 EventBusはオブザーバー/消費者の周りを包み込むものであると考えてください。 この例では、他のアクティビティにデータを渡すために使用しているようです。バンドルを使ったり、モデルに保存したり、アクティビティ2でモデルにアクセスしたりするのがよいでしょう。 –