嗨我有一個關於AlertDialog/Toast的問題。 當用戶點擊一個按鈕時,只需顯示一條顯示「你是對的」的信息1秒鐘。當我使用toast/alertdialog實現它時,它會執行此操作,但在dailog關閉之前,會在onclick方法中啓動下一條指令。我該如何解決?如何暫停其他指令,直到關閉對話框消息
回答
如果您使用的是吐司,則使用Handler推遲一個任務以顯示吐司的時間。
使用對話框時,請爲「Okey」按鈕實施onClickListener。
對話框沒有任何問題,因爲它會暫停,直到用戶單擊..但是爲了顯示一條消息,只有一條消息,它不會等待任何東西,因此繼續執行下一個不希望的指令..使用線程的暫停會導致它在對話後沒有響應..使用處理程序的方式不同,你可以使用代碼片段來解釋嗎? – Nikhil
我不得不做的是在相應的偵聽器中放置AlertDialog後面的任何代碼。例如,如果在警報對話框後有一堆代碼,並且只希望根據某種響應執行,請將該代碼移到另一個方法中。然後,在您的positiveButton偵聽器(或負面按鈕偵聽器)中,將該調用添加到您剛剛創建的相應方法。或者你可以將所有內容都塞進監聽器中,但這會使代碼變得不易管理。
沒有沒有響應。對話框應該出現,並在其他語句執行之前,這是不聽任何respnse – Nikhil
這裏是我是如何做到的使用Handler對象---
公共類ToastActivity延伸活動{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Handler mHandler = new Handler();
for(int i=10;i>=1;i--)
{
Toast.makeText(this, ""+i, Toast.LENGTH_SHORT).show();
}
mHandler.postDelayed(new Runnable(){public void run(){
LinearLayout t=(LinearLayout)findViewById(R.id.l); //This task is delayed by 21 sec.
t.setBackgroundColor(Color.CYAN);
}
}, 21000);
}
}土司消失後祝酒後
語句執行。
因爲長度短的吐司顯示2秒,有必要的最小等待時間大約是20000ms,所以等待21000ms是一些硬編碼,但它是正確的。 –
- 1. 暫停jQuery的執行,直到OPENFILE關閉對話框
- 2. 暫停當前功能,直到對話框關閉
- 3. 暫停執行,直到子對話框關閉
- 4. 關閉輸入消息對話框
- 5. 如何從p:對話框中消除p:消息關閉?
- 6. 關閉對話框,關閉其主對話框
- 7. 如何以編程方式關閉消息對話框?
- 8. 如何以編程方式關閉消息對話框
- 9. 如何關閉其他類中的當前對話框 - Android
- 10. jQuery UI對話框 - 暫停關閉事件
- 11. 如何關閉對話框
- 12. 如何關閉對話框
- 13. 如何才能使執行暫停,直到新表單關閉?
- 14. 我該如何讓對話框不會關閉,直到postexecute?
- 15. jQuery確認對話框 - 暫停,直到獲得批准
- 16. 如何在我轉移到其他活動時關閉進度對話框?
- 17. 停止默認onOK從對話框關閉對話框CKEDITOR
- 18. 暫停和關閉
- 19. DoInBackground對話框關閉時取消嗎?
- 20. 如何暫停ZXing閱讀,直到用戶關閉Xamarin Forms中的提醒消息?
- 21. 如何對關閉模式對話框
- 22. 角度消息嵌套指令,如何保持它與其他指令
- 23. 振動,直到消息框關閉Windows Phone 7
- 24. 暫停消息框的線程
- 25. 消息框,而不等待或暫停
- 26. 關閉指令中的模式對話框
- 27. Form.Close()也關閉其他窗體(對話框)
- 28. 使用jQuery從其他函數關閉對話框
- 29. 如果用戶沒有點擊到其他地方,Javascript關閉對話框
- 30. 自動關閉消息框
這是一個很棒的問題,我已經注意到了這一點。您可能會認爲Android會「等待」響應,但是您的程序會繼續執行,即使它正在等待響應。 – Jack
在對話框關閉的同時睡眠線程。 –
睡覺的用戶界面線程會導致它不響應當用戶點擊 – Jack