Как AppCompatActivity может взаимодействовать с FragmentActivity с помощью EventBus?

Вопрос: Как AppCompatActivity может взаимодействовать с FragmentActivity с помощью EventBus?

Находки, FragmentActivity может связываться с AppCompatActivity, и вызывается метод onEvent, но если мы переключаем путь связи на AppCompatActivity, связывающийся с FragmentActivity, метод onEvent никогда не вызывается.

public class MainActivity extends AppCompatActivity{
 private String data;
 @Override protected void onCreate{
  data = "private String data from MainActivity";
  EventBus.getDefault().postSticky(data);
 }
}

public class AccountFade extends FragmentActivity{
 private String mAccountFadeData;
 @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
 public void onEvent(String s){
  Toast.makeText(this, "private String mAccountFadeData from MainActivity", Toast.LENGTH_LONG).show();
  this.mAccountFadeData = s;
 }

 @Override protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  EventBus.getDefault().register(this);
 }

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

1 ответ

Решение

Вы должны создать класс, содержащий одну переменную String, и запустить этот класс с помощью EventBus.

Итак, сначала создайте класс, как это

public class DataChangeEvent {
    private String data;

    public DataChangeEvent(String data) {
        this.data = data;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

Теперь используйте это для вашего мероприятия

Пост в Activtiy:

 EventBus.getDefault().postSticky(new DataChangeEvent(data));

Получить в FragmentActivity:

 @Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
 public void onEvent(DataChangeEvent event){
      Toast.makeText(this, "private String mAccountFadeData from MainActivity", Toast.LENGTH_LONG).show();
      this.mAccountFadeData = event.getData();
 }
Другие вопросы по тегам