AlertDialog问题

时间:2010-02-21 19:00:52

标签: android

我在创建AlertDialog时遇到问题。

我想当我点击一个按钮时出现AlertDialog,所以我把所有代码都放在那个按钮监听器中创建对话框...相同的代码在该监听器之外工作,但内部监听器不起作用...它没有不要调用任何错误,但是当我开始编写模拟器的时候会发生这样的事情:“应用程序意外终止”....

这是我的代码:

btsenddata.setOnClickListener(new Button.OnClickListener() { 

      public void onClick (View v){ 

        AlertDialog.Builder alt_bld = new AlertDialog.Builder(getApplicationContext() ); // I've tried with "activity1.this" instead "getApplicationContext()" but it is the same result
        alt_bld.setMessage("Do you want to close this window ?")
        .setCancelable(false)
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
        // Action for 'Yes' Button
        }
        })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
        //  Action for 'NO' Button
        dialog.cancel();
        }
        });
        AlertDialog alert = alt_bld.create();
        // Title for AlertDialog
        alert.setTitle("Title");
        // Icon for AlertDialog
        alert.setIcon(R.drawable.icon);
        alert.show();
      }});
}

....我听说方法getApplicationContext()正在创建一些问题,但我已经尝试用activity.this替换它,但它无论如何都不起作用...... 如果有人知道这个或更多的原因有关alertdialogs的答案。 感谢。

3 个答案:

答案 0 :(得分:1)

  

“应用程序意外终止”

可能意味着您有一个要在LogCat中查看的堆栈跟踪,它会告诉您错误的行号。看看那个堆栈跟踪。如果您无法理解,请通过编辑原始问题在此处发布。

答案 1 :(得分:0)

我已运行您的代码并使用MyActivity.this工作。而且,大多数情况下,您想要的是Activity上下文。见blog post

您也可以尝试使用v.getContext()

AlertDialog.Builder alt_bld = new AlertDialog.Builder(v.getContext());

答案 2 :(得分:0)

在您的代码中,您正在实现OnClickListener,它不是主要活动的一部分,

要从任何Listener处理UI,您需要创建Handler。

public Handler mHandler = new Handler();

然后在成员声明中写上面的代码,

mHandler.post(new Runnable() {
      public void run() {
            // your UI handling code
      }
});

在Listener中编写上面的代码。这可以解决你的问题。