我有一个类XMPPClient,它实现了Player接口,用于回调某些功能。我将接口的回调函数从XMPPManager调用到函数所在的XMPPClient中。
在XMPPClient中,我有以下接口回调函数:
public void request_play(String player) {
Dialog request_dialog2 = new Dialog(this);
request_dialog2.setContentView(R.layout.dialog_request2);
request_dialog2.setTitle(R.string.response_title);
TextView dialog_message = (TextView)request_dialog2.findViewById(R.id.response_message);
dialog_message.append(player);
request_dialog2.setCancelable(true);
Button button1 = (Button)request_dialog2.findViewById(R.id.response_accept);
button1.setOnClickListener(this);
Button button2 = (Button)request_dialog2.findViewById(R.id.response_decline);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
request_dialog2.show();
}
在XMPPManager中,我使用以下代码实际调用回调函数:
PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
connection.addPacketListener(new PacketListener() {
public void processPacket(Packet packet) {
if(body.equals("play")) {
player_avail.request_play("test");
}
}
}
连接类型为:XMPPConnection。
我正在通过以下方式调用XMPPClient:
Intent intent_remote = new Intent(this,XMPPClient.class); startActivity(intent_remote);
问题是Dialog request_dialog2(在request_play()中)没有显示在屏幕上。如果我创建一个Activity而不是Dialog,那么Activity运行得很好,但不是Dialog。
原因可能是什么?
此外,XMPPManager不是在一个单独的线程中运行,因为目前我在开发过程中并不远,而且我必须添加它。
欢迎任何想法。谢谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
只需在对话框的 onResume() 方法中插入一个回调,例如获取对话框数据。 显示对话框后将调用 onResume()。 如果我需要回调来请求活动的对话框数据,我会在对话框内执行此操作:
@Override
public void onResume() {
super.onResume();
if(hasData() && mCallback != null){ // Check if already has data
mCallback.getDialogData();
}
}
祝您有美好的一天,祝您编程愉快 :D