我使用eventbus来更新TextView,但是在我第二次更改它之后不能正常工作,但是我不知道它是如何工作的。打电话给你帮我?非常感谢。谢谢我的代码。 首先,它不起作用
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(Event event) {
final Event loca = event;
System.out.println("---sta--" + "onEvent");
if (!isVisible || !isLoad) {
return;
}
System.out.println("---sta--" + "visonEvent" + loca.getAddress()+TextUtils.isEmpty(loca.getAddress()));
txtLocationDetails.setText(String.format("address:%s", TextUtils.isEmpty(loca.getAddress()) ? "" : loca.getAddress()));
offset = 0;
initDatas();
}
但我改变了它下面的代码
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(Event event) {
final Event loca = event;
System.out.println("---sta--" + "onEvent");
if (!isVisible || !isLoad) {
return;
}
System.out.println("---sta--" + "visonEvent" + loca.getAddress()+TextUtils.isEmpty(loca.getAddress()));
txtLocationDetails.post(new Runnable() {
@Override
public void run() {
txtLocationDetails.setText(String.format("address:%s", TextUtils.isEmpty(loca.getAddress()) ? "" : loca.getAddress()));
}
});
offset = 0;
initDatas();
}
我不知道为什么没关系,你能告诉我吗?谢谢。
答案 0 :(得分:0)
在使用线程时,请勿尝试直接更新数据。
否则创建一个新方法并从线程调用以更新TextView中的数据。
您可以尝试使用此代码在TextView文本中进行更改:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(MessageEvent event) {
textField.setText(event.message);
}