我正在使用定义JunctionActor的外部包。我们的想法是JunctionActor可以通过名为sendMessage的方法将JSON消息发送到远程服务器,并通过调用onMessageReceived的侦听器接收消息。在我的实现中,设备接收它发送的每条消息,从而调用onMessageReceived。然而,在我的代码中,我在我的activity类中包含了一个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();
}
}
答案 0 :(得分:2)
我不确定JunctionActor是如何工作的,但是有可能从不是UI线程的线程调用onMessageReceived回调吗? 如果是这种情况,您可能必须使用处理程序,如this post中所述。
答案 1 :(得分:0)
它不烘烤的原因是因为上下文对象HelloWorldJunctionActivity.this不存在。尝试发送上下文对象
void show_message(String message,Context con){ 烤面包 .makeText(con,message,Toast.LENGTH_SHORT) 。节目(); } }
show_message(“已连接”,getApplicationContext());