我正在使用定义连接器的外部软件包。这个想法是,连接器可以通过称为sendmessage的方法将JSON消息发送到远程服务器,并通过侦听器调用onMessageCeective的侦听器接收消息。在我的实施中,该设备接收到它发送的每条消息,从而调用OnMessageCeived。但是,在我的代码中,我在活动类中包含了一个chatclient对象,该对象必须调用show_message方法。 show_message触发烤面包。当我从onjoin调用show_message时,根本没有问题,但是当它从OnMessageCeeperive中调用时,什么也不会显示,而我的调试器告诉我,该应用程序确实会收到一条消息,并且触发了OnMessageReceivective。同时,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();
  }
}
有帮助吗?

解决方案

我不确定连接器是如何工作的,但是是否有可能从不是UI线程的线程中调用OnMessageCeived回调?如果是这样,您可能必须使用处理程序,如 这个帖子.

其他提示

之所以不敬酒是因为上下文对象helloworldjunctionlive。这是不存在的。尝试发送上下文对象

void show_message(字符串消息,上下文con){toast .maketext(con,message,toast.length_short).show(); }}}

show_message(“连接”,getApplicationContext());

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top