我使用asmack buddycloud 2010作为聊天应用程序,我尝试使用处理程序从我的服务器向活动发送聊天消息,这是我服务的代码部分:
public void processPacket(Packet packet) {
Message message = (Message) packet;
if (message.getBody() != null) {
String fromName = StringUtils.parseBareAddress(message.getFrom());
Log.i("XMPPChatDemoActivity ", " Text Recieved " + message.getBody() + " from "
+ fromName);
messages.add(fromName + ":");
messages.add(message.getBody());
Log.i("XMPPChatDemoActivity",message.getBody());
mHandler.obtainMessage(123, "Message or data");
mHandler.sendMessage(message);
这里的mhanlder.sendmessage我有一个错误,说类型处理程序中的方法sendMessage(消息消息)不适用于参数(org.jivesoft.smack.packet.message)
在活动中:
Public CLass XMPPActivity extends Activity {
.
.
.
private class getmessage extends Handler{
public void handleMessage(Message msg) {
setListAdapter();
}
}
这里我不能覆盖handlemessage,它说我必须覆盖超类型方法!!!!你们知道怎么了吗?我错过了什么吗?感谢
当我用
替换它时 mHandler.obtainMessage(123, message).sendToTarget();
i get nothing, because i can not override the handleMessage()
答案 0 :(得分:0)
您可以通过以下方式完成。
在您的活动中声明Handler
说明在onCreate
方法内。
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case PASS:
String obj = msg.obj.toString();
Toast.makeText(YourActivity.this, "PASS",
Toast.LENGTH_SHORT).show();
break;
case FAIL:
Toast.makeText(YourActivity.this, "FAIL",
Toast.LENGTH_SHORT).show();
break;
}
}
};
声明Handler
public static final int PASS = 1;
public static final int FAIL = 2;
要传递消息,请使用以下代码。
Message msg = new Message();
msg.what = PASS;
msg.obj = fromName;
在这里,您可以将msg.what
更改为任何整数常量。您可以将任何类型的对象设置为msg.obj
。但要确保您设置的对象类型,您只需要根据它来输入它。否则将抛出异常。