TextView setText()有时不起作用

时间:2016-12-20 06:58:56

标签: android textview event-bus

我使用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();

}

我不知道为什么没关系,你能告诉我吗?谢谢。

1 个答案:

答案 0 :(得分:0)

在使用线程时,请勿尝试直接更新数据。

否则创建一个新方法并从线程调用以更新TextView中的数据。

您可以尝试使用此代码在TextView文本中进行更改:

@Subscribe(threadMode = ThreadMode.MAIN)
    public void onEventMainThread(MessageEvent event) {
    textField.setText(event.message);
}