今天在使用eventbus进行消息传递时,发现无法进行UI操作
/**
* 接收消息,接收方可接受此消息
*/
@Subscribe(threadMode = ThreadMode.MAIN)
public void MessageEventBus(Teacher teacher) {
//显示接受的消息
Log.d("Subscribe result is -->", teacher.getTname());
nav_username.setText(teacher.getTname());
}
Log.d也可以正常的打印出由json解析出的字符串
//获取nav_header_main中的,menu_username用于动态更新
View headerLayout = navigationView.inflateHeaderView(R.layout.nav_header_main);
nav_username = (TextView) headerLayout.findViewById(R.id.menu_username);
获取textview也没有问题
想了半天后才想起来,将对eventbus的注册放在了text view的初始化之后,相当于还没初始化就更新了ui,只要将
EventBus.getDefault().register(this);
放在onCreate中的最后面即可
本文详细探讨了在使用EventBus进行消息传递时遇到的UI更新问题。作者在尝试通过EventBus接收消息并更新UI时遇到了难题,最终发现是因为EventBus的注册时机不当导致的。通过调整EventBus的注册位置到Activity的onCreate方法最后,成功解决了UI更新的问题。
3764

被折叠的 条评论
为什么被折叠?



