Почему мой новый фрагмент не может подписаться отто
Я сделал пост в своей деятельности, и он хорошо работает в первом фрагменте BlankFragment, однако, когда я попытался заменить BlankFragment на BlackFragment2, и сделать такую же подписку, он больше не может подписаться, вот код.
Основная деятельность:
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().add(R.id.fr1, new BlankFragment()).commit();
button = (Button)findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BusStation.getBus().post(new Message("hellworld"));
}
});
btn2 = (Button)findViewById(R.id.btn2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragmentManager1 = getSupportFragmentManager();
fragmentManager1.beginTransaction().replace(R.id.fr1, new BlankFragment2()).commit();
BusStation.getBus().post(new Message("zhengzhi zhou"));
}
});
}
BlankFragment и BlankFragment2 используют один и тот же код:
@Override
public void onResume() {
super.onResume();BusStation.getBus().register(this);
}
@Override
public void onPause() {
super.onPause();
BusStation.getBus().unregister(this);
}
@Subscribe
public void receiveMsg(Message msg){
textView.setText(msg.getMsg());
}
Кто-нибудь может мне с этим помочь?
1 ответ
Использование commitNow()
вместо commit()
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Replace the contents of the container with the new fragment
ft.replace(R.id.fragment_place, fragment);
// or ft.add(R.id.your_placeholder, new FooFragment());
// Complete the changes added above
ft.commitNow();