今天在使用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中的最后面即可