我在创建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的答案。 感谢。
答案 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中编写上面的代码。这可以解决你的问题。