问题描述
我正在参加一个活动,并且试图显示一个警报对话框。代码是这样的:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("xx");
builder.setPositiveButton(R.string.delete,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
built.dismiss();
}
});
builder.setNegativeButton(R.string.giveup,int which) {
built.dismiss();
}
});
builder.setCancelable(true);
built = builder.create();
built.show();
问题是,在活动中的两个不同位置调用了相同的代码,而一个起作用,而另一个则不起作用!我不明白,因为它们实际上是相同的...
此网站中存在类似这样的问题,我尝试了其中的大多数问题。我将参数中的this
更改为活动名称,设置了位置,放置了show()方法,等等...我不知道如何进行
我在两个地方都设置了断点。工作顺利。但是当它不显示时,断点将在“ builder.create()”处崩溃。它不会超出此范围(它看不到build.show的下一个断点)。它说“框架不可用”
解决方法
我找到了。只是把它放在这里,以防有人需要。我从这里找到它:Listener method (interface in Service) in my Activity doesn't want to display a simple message
问题是,我从发射器(listener.listener)调用了“不工作”的代码,因此它无法在正确的线程上工作。我们需要它来处理UI线程。当我添加此内容时:
runOnUiThread(new Runnable(){
public void run(){
showAlertDialog();
}
});
成功了!