题
我正在使用定义连接器的外部软件包。这个想法是,连接器可以通过称为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());
不隶属于 StackOverflow