【问题标题】:Triggering a toast from a listener从侦听器触发吐司
【发布时间】:2011-11-30 19:51:42
【问题描述】:

我正在使用定义 JunctionActor 的外部包。这个想法是,JunctionActor 可以通过名为 sendMessage 的方法将 JSON 消息发送到远程服务器,并通过调用 onMessageReceived 的侦听器接收消息。在我的实现中,设备接收它发送的每条消息,因此调用 onMessageReceived。然而,在我的代码中,我在我的活动类中包含了一个 ChatClient 对象,它必须调用 show_message 方法。 show_message 触发 Toast。当我从 onJoin 调用 show_message 时,完全没有问题,但是当从 onMessageReceived 调用它时,什么都没有显示,而我的调试器告诉我应用程序确实收到了一条消息并且触发了 onMessageReceived。同时,在 onJoin 方法中调用 show_message 确实有效。而且我看不出他们两者之间有什么区别。 你有解决办法吗?

非常感谢

public class HelloWorldJunctionActivity extends Activity {
     onCreate(...){...} [...]
private class ChatClient extends JunctionActor {
      public ChatClient() {
        super("client");
      }
      public void onActivityJoin() {
          show_message("Connected");
      }
      @Override
      public void onMessageReceived(MessageHeader header, JSONObject msg) { 
          try { 
            show_message(msg.getString("text"));
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            show_message(e.getMessage());
        }
      }
}
void show_message(String message) {
      Toast
        .makeText(HelloWorldJunctionActivity.this, message, Toast.LENGTH_SHORT)
        .show();
  }
}

【问题讨论】:

    标签: java android listener junction


    【解决方案1】:

    我不确定 JunctionActor 是如何工作的,但是否有可能从不是 UI 线程的线程调用 onMessageReceived 回调? 如果是这种情况,您可能必须使用处理程序,如 this post 中所述。

    【讨论】:

    • JunctionActor 由外部 jar 提供。由于它是异步的,我猜它有效地使用了一个不是 UI 线程的线程。这真的很有帮助,我会尽快测试它。谢谢
    【解决方案2】:

    它不烤的原因是因为上下文对象 HelloWorldJunctionActivity.this 不存在。也尝试发送上下文对象

    void show_message(String message, Context con) { 吐司 .makeText(con,消息,Toast.LENGTH_SHORT) 。显示(); } }

    show_message("已连接", getApplicationContext());

    【讨论】:

    • 我的错,我不够精确。实际上我的活动不叫 myActivity 而是 HelloWorldJunctionActivity。另外,在 onJoin 方法中调用 show_message 会触发 toast,这与 if onMessageReceived 不同。
    • 我不明白你是否得到它。好吧,如果这回答了您的问题,则将其标记为已回答:)
    • 您的假设是 show_message 不起作用,因为我没有传递正确的上下文。但我做到了,我可以看到 toast 消息,所以问题不存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2020-09-06
    • 2015-12-27
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多