Как 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();
}