android - 回调函数 - 对话框现在显示

时间:2011-12-26 19:12:15

标签: java android debugging

我有一个类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不是在一个单独的线程中运行,因为目前我在开发过程中并不远,而且我必须添加它。

欢迎任何想法。谢谢。

2 个答案:

答案 0 :(得分:0)

可能是因为布局?您可以在创建对话框12上找到有关示例代码的更多信息。

答案 1 :(得分:0)

只需在对话框的 onResume() 方法中插入一个回调,例如获取对话框数据。 显示对话框后将调用 onResume()。 如果我需要回调来请求活动的对话框数据,我会在对话框内执行此操作:

@Override
public void onResume() {
    super.onResume();
    if(hasData() && mCallback != null){  // Check if already has data
        mCallback.getDialogData();
    }
}

祝您有美好的一天,祝您编程愉快 :D