我該如何覆蓋Dialog
的onBackPressed
關閉對話框,並在Activity
上調用finish()
它位於?覆蓋對話框onBackPressed()?
24
A
回答
50
您可以使用setOnCancelListener
:
dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
@Override
public void onCancel(DialogInterface dialog)
{
MyActivity.this.finish();
}
});
您需要完成只有你的活動。對話框將被自動解除。
22
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dialog.cancel();
return true;
}
return false;
}
})
2
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
return new Dialog(getActivity(), getTheme()){
@Override
public void onBackPressed(){
// dismiss();
// activityReference.finish();
}
};
}
0
在我的情況
我使用DialogFragment,這仍然是一個對話框.. 所以我在對話框中重寫onCancel()
,它的反應就像活動的onBackPressed()
每次我點擊後退按鈕時,對話框所示。
@Override
public void onCancel(DialogInterface dialog)
{
super.onCancel(dialog);
Log.i("RecDialog.onCancel()", "onCancel");
}
希望我幫了忙。
0
我最後在我的對話框中添加了一個按鍵監聽器來收聽後退鍵。 不如覆蓋onBackPressed()
優雅,但它的工作原理。 下面是代碼:
dlgDetails = new AlertDialog.Builder(this)
.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey (DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK &&
event.getAction() == KeyEvent.ACTION_UP &&
!event.isCanceled()) {
dialog.cancel();
showDialog(DIALOG_MENU);
return true;
}
return false;
}
})
//(Rest of the .stuff ...)
相關問題
- 1. 覆蓋對話框的OnBackPressed
- 2. Android覆蓋onBackPressed()
- 3. onBackPressed()覆蓋
- 4. 覆蓋覆蓋JQuery UI 1.8.2對話框
- 5. jQuery UI對話框覆蓋
- 6. LWUIT:覆蓋對話框
- 7. 覆蓋startResolutionForResult的對話框
- 8. 無法覆蓋onBackPressed onKeyDown - Android
- 9. 覆蓋onBackPressed()不起作用
- 10. 覆蓋對話框 - 對齊視圖
- 11. 打開覆蓋父對話框維度的子對話框
- 12. 覆蓋jQuery對話框方法
- 13. 覆蓋單個YUI對話框樣式
- 14. 對話框全部用黑色覆蓋
- 15. 覆蓋JQuery對話框中的CheckBox
- 16. 如何覆蓋Internet Explorer對話框?
- 17. 覆蓋對話框解僱()與新AlphaAnimation
- 18. 對話框覆蓋層不起作用
- 19. Android覆蓋默認對話框主題
- 20. modal對話框或div覆蓋frameset?
- 21. 設置對話框覆蓋Jquery
- 22. jquery ui對話框覆蓋未顯示
- 23. 帶覆蓋背景的jquery對話框
- 24. jQuery UI模式對話框覆蓋
- 25. 如何覆蓋PackageInstaller對話框?
- 26. 擅長覆蓋對話框關閉
- 27. JQuery通過對話框覆蓋
- 28. Android的覆蓋除對話框
- 29. Primefaces - AjaxStatus - 對話是覆蓋
- 30. 引導模式對話框可以覆蓋另一個對話框嗎?
+1指着我在正確的方向,我一直在尋找的效果是onDismissListener但足夠接近:-) – Skizit 2011-06-01 17:16:04
onDismissListener覆蓋正面和負面的按鈕了。所以如果你想重寫壓縮和點擊對話外的任何地方,onCancelListener更好。 – thinzar00 2017-07-28 07:11:38