android 如何讓dialog不消失,即使是用戶按了返回鍵dialog也不消失
解決的問題:軟件提示升級的dialog時候,用戶有可能按了返回鍵,但是現在的需求是用戶只能按“確定升級”或者“暫時不升級”這兩個按鈕才能拿dialog消失,按返回鍵不能使dialog消失
方案:截取activity的 onkeydown事件,而應該截取dialog的key響應事件,當dialog在前台顯示的時候,keylistener首先會派發到dialog里面,在那里面監聽就行了。
先申明一個keylistener。
OnKeyListener keylistener = new DialogInterface.OnKeyListener(){
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK&&event.getRepeatCount()==0)
{
return true;
}
else
{
return false;
}
}
} ;
在把這個listener注冊到dialog里面去 當初始化dialog的時候
builder.setTitle(getText(R.string.XXXX))
.setMessage(getText(R.XXXXXX))
.setOnKeyListener(key).setCancelable(false)
.setPositiveButton(android.R.string.ok, someOKButtonListener)
.setNegativeButton(android.R.string.cancel, null);
PS: setCancelable(false),作用是當dialog彈出來的時候,如果觸點在dialog外圍,按照默認的方式 dialog將消失。如果這個設為false的話 這種情況dialog就不會消失了。 加了這一句就OK了。dialog.setCancelable(false);
