我有一個使用Theme.Dialog樣式的活動,使其成爲另一個活動的浮動窗口。但是,當我在對話框窗口(在背景活動上)之外單擊時,對話框關閉。我怎樣才能阻止這種行爲?阻止Android活動對話框在外部觸摸時關閉
回答
這可以幫助你。這是處理觸摸事件之外的方式:
How to cancel an Dialog themed like Activity when touched outside the window?
通過捕獲的事件,無所事事,我想你可以防止關閉。但是奇怪的是,當你觸摸外部時,你的活動對話框的默認行爲應該是而不是。
(PS:該代碼使用WindowManager.LayoutParams)
該對象雖然不是對話框,但它是使用對話框樣式的Activity。活動不具有此方法,並且不能轉換爲Dialog。 – Fergusmac
好吧,對不起,我誤解了,我很快就會更正我的答案 –
我編輯添加我發現可以幫助你 –
什麼你實際上有是一種活動(即使它看起來像一個對話框),因此,你應該從你的活動叫setFinishOnTouchOutside(false)
如果你想保持它打開當點擊後臺活動時。
編輯:這只是與Android API級別工作11或更高
這並不妨礙您在活動中按下「返回」按鈕。所以你也需要重寫'onBackPressed()'在其正文中無所作爲 –
沒有在沒有onBackPressed()的Activity對話框中阻止「返回」按鈕。用this.setFinishOnTouchOutside(false)完美工作。 – Kunalxigxag
效果不錯,謝謝 –
什麼工作對我來說是創造dialogFragment一組它不會取消:
dialog.setCancelable(假);
沒有幫助。這個問題是關於活動,而不是對話框。 –
爲了防止對話框從返回鍵按下的使用越來越駁回了這一
dialog.setCancelable(false);
此外,要防止對話框從外面取得聯繫駁回使用
dialog.setCanceledOnTouchOutside(false);
這個答案很有幫助,但是這個問題是關於使用Theme.Dialog屬性的活動。 –
我知道什麼時候我意識到它太晚了,因爲它幫助很多人沒有刪除它。 – Singhak
我知道這並不是真的屬於這個問題,但是這對我有幫助。謝謝! – dennisdrew
我面臨着同樣的問題。爲了處理它,我在對話框中設置了一個OntouchListener
,並且什麼都不做。但是Dialog在旋轉屏幕時也會放棄。爲了解決這個問題,我設置了一個變量來告訴我對話框是否正常解除了。然後我設置了一個OnDismissListener
到我的對話框,並在裏面檢查變量。如果對話框正常排除,我什麼都沒有,否則我再次運行對話框(並將其狀態設置爲在我的情況下解散)。
對於更高的API 10,當外部觸摸時,對話框消失,而在低於API 11時,對話框不會消失。爲了防止這種情況,你需要做的:
在styles.xml
:<item name="android:windowCloseOnTouchOutside">false</item>
OR
在onCreate()
方法,使用:this.setFinishOnTouchOutside(false);
注:API 10以及下,這種方法沒有按」沒有效果,也不需要。
正是我在找的東西。謝謝! – masterwok
使用setFinishOnTouchOutside(false)
的API> 11,不要擔心,因爲它的Android的默認行爲活動爲主題的對話將不會對外界觸摸完成了API < 11 :)!Cheerss!
我在onCreate()中使用它,似乎可以在任何Android版本上使用;在5.0和4.4上測試。X,不能在薑餅測試,三星設備(注1運行GB)有它這種方式默認爲:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
setFinishOnTouchOutside(false);
}
else
{
getWindow().clearFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
}
super.onCreate(savedInstanceState);
Dialog dialog = new Dialog(context)
dialog.setCanceledOnTouchOutside(true); //use this to dismiss the dialog on outside click of dialog
dialog.setCanceledOnTouchOutside(false); //use this for not to dismiss the dialog on outside click of dialog.
關注有關dialog.
dialog.setCancelable(false);//used to prevent the dismiss of dialog on backpress of that activity
dialog.setCancelable(true);//used to dismiss teh dialog on onbackpressed of that activity
請注意,這個問題涉及用作對話框的活動,而不是Dialog類。 –
不錯...非常好...很好看回答:P –
alert.setCancelable(false);
alert.setCanceledOnTouchOutside(false);
此鏈接查看更多細節
我想這會幫助你。它對我來說
也請嘗試解釋爲什麼這將工作...只是代碼轉儲不是一個好的答案。 – Codebender
也可以指定不同的動作im plementing onCancelListener:
alertDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
@Override
public void onCancel(DialogInterface dialogInterface) {
//Your custom logic
}
});
如何通過點擊警報對話框來確定是否調用取消? – cegprakash
設置對話框中取消是假的就足夠了,任你摸警告對話框外,或單擊後退按鈕將使警告對話框消失。所以,用這一個:
setCancelable(false)
而其他功能不再是必需的: dialog.setCanceledOnTouchOutside(false);
如果要創建一個臨時對話框,不知道有沒有把此行的代碼,這裏有一個例子:
new AlertDialog.Builder(this)
.setTitle("Trial Version")
.setCancelable(false)
.setMessage("You are using trial version!")
.setIcon(R.drawable.time_left)
.setPositiveButton(android.R.string.yes, null).show();
這裏是我的解決方案:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select The Difficulty Level");
builder.setCancelable(false);
builder.setCancelable(假);
公共無效Mensaje(視圖v){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("¿Quieres ir a el Menú principal?");
builder.setMessage("Al presionar SI iras a el menú y saldras de la materia.");
builder.setPositiveButton("SI", null);
builder.setNegativeButton("NO", null);
builder.setCancelable(false);
builder.show();
}
嗨,亞歷克斯。歡迎來到StackOverflow並感謝您的回答。您能否編輯您的答案來描述您的代碼的功能以及如何解決OP的問題?只編碼的答案是不鼓勵的,因爲他們沒有教導或解釋_why_。謝謝! –
當使用對話框,在OnCreate活動添加此
setFinishOnTouchOutside(false);
簡單,
alertDialog.setCancelable(false);
防止點擊對話框外的用戶。
- 1. Android:在對話框中關閉活動
- 2. 觸摸後關閉對話框
- 3. 完成(關閉)觸摸的Android活動
- 4. 阻止JavaFX對話框關閉
- 5. 如何防止在點擊外部時關閉GWT對話框
- 6. Android對話框關閉阻止列表視圖活動被填充
- 7. android對話框:關閉活動後如何返回對話框?
- 8. 在新活動前關閉對話框
- 9. Android關閉所有對話框後關閉活動
- 10. 如何使對話框在外部觸摸時保持打開
- 11. 如何在外部活動對話框觸摸時禁用背景活動行爲
- 12. 單擊外部關閉對話框
- 13. Dojo工具關閉外部對話框
- 14. 關閉對話框點擊外部
- 15. 當用戶在模態對話框外單擊時,如何阻止Modal對話框關閉在JQuery UI中?
- 16. 用戶觸摸屏幕(外部)時如何隱藏對話框?
- 17. 關閉活動完成對話框
- 18. 在Android中關閉對話框而不關閉對話框
- 19. jQuery UI對話框:如何在外部點擊時關閉對話框?
- 20. jQuery點擊外部對話框關閉對話框
- 21. 如何讓對話在外部觸摸打開並捕捉外部觸動?
- 22. 如何關閉/ dismise活動在android中的對話框類?
- 23. Android:如何在活動銷燬後關閉對話框?
- 24. jQuery - 在外部點擊時關閉對話框
- 25. 如何阻止後臺活動運行時提醒對話框在運行android
- 26. Android:在關閉WiFi時關閉活動
- 27. 防止Android對話框擴展活動
- 28. Android對話框關閉()不關閉
- 29. 的背景圖像觸摸關閉對話框libgdx
- 30. 阻止觸摸cocos2d
爲什麼你會那樣做順便說一句。如果你想要的行爲是對話框,爲什麼不使用對話框?回答你的問題,我認爲沒有解決方案。 –
@KumarBibek對話框在佈局定製時受到限制......這就是爲什麼一個活動。即使開發人員文檔也建議使用這種方法進行靈活的定製 – Leo
而OP需要的是一個** Modal **對話框,即強制用戶響應的對話框,例如OK或Yes/No。用戶不應該只能點擊一下。 –