这是我的代码:(“Apagar”表示“关闭”,“reiniciar”表示“重启”)
public void uncaughtException(Thread thread, Throwable ex)
{
try
{
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(iAct).create();
//alertDialog.setTitle("");
alertDialog.setMessage("Se ah producído un error y la aplicación no puede continuar funcionando." +
"¿Desea reiniciarla o finalizarla?");
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Reiniciar", new ReiniciarOnClickListener(iAct));
alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE,"Apagar", new ApagarOnClickListener(iAct));
alertDialog.show();
}catch(Exception e){
Thread.setDefaultUncaughtExceptionHandler(iDefaultHandler);
iDefaultHandler.uncaughtException(thread, ex);
}
}
执行Try
块内的所有代码,但从不显示警报,并且屏幕保持灰色。
在iDefaultHandler
中,我在保留getDefaultUncoughtException()
之前保存了{{1}}的结果。
缺少任何信息,请索取。我不知道如何解决这个问题。
答案 0 :(得分:0)
尝试取出.create()。只需初始化AlertDialog然后显示它。
答案 1 :(得分:0)
您是否尝试过使用onCreateDialog
来构建对话框?类似的东西:
private static final int DIALOG_UNCAUGHT_EXCEPTION = 0;
...
public void uncaughtException(Thread thread, Throwable ex)
{
try
{
showDialog(DIALOG_UNCAUGHT_EXCEPTION);
}catch(Exception e)
{
Thread.setDefaultUncaughtExceptionHandler(iDefaultHandler);
iDefaultHandler.uncaughtException(thread, ex);
}
}
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch (id) {
case DIALOG_UNCAUGHT_EXCEPTION:
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setMessage("message")
.setPositiveButton("Reiniciar",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do stuff;
}
})
.setNegativeButton("Apagar",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do other stuff;
}
});
alertDialog.create();
break;
default:
dialog = null;
break;
}
return dialog;
}
显然,如果需要,可以用自己的默认按钮监听器替换。