2011-02-07 60 views
2

當用戶啓動我的應用程序時,我需要顯示一個類似於EULA的對話框,但是我的應用程序也有一個需要在對話框之前顯示的啓動畫面。我編碼如下:Android Activity.startActivity()和Dialog.show()order

Activity A.onCreate(...) { 
... 
1. startActivity(Activity B) [this activity calls .finish() after x seconds] 
2. dialog.show() 
... 
} 

從邏輯上看,這似乎應該工作。但是,在從活動B返回到活動A後,整個屏幕將變暗,就好像對話框正在顯示一樣,但沒有對話窗口。

我能夠扭轉電話本身和活動B之後的對話節目,以解決這樣做並沒有出現怪異的問題:

Activity A.onCreate(...) { 
... 
1. dialog.show() 
2. startActivity(Activity B) [this activity calls .finish() after x seconds] 
... 
} 

任何人都知道爲什麼調用的順序是如此重要?對我來說他們應該工作一樣。

回答

3

這兩個函數都是異步函數。這意味着代碼執行不會暫停,但繼續調用下一行。

而不是一個接一個地打電話給他們,你需要等待一個人回來,然後再打電話給下一個。如果您想先顯示對話框,請添加一個onDismissListener以偵聽關閉對話框的時間。在該聽衆中,您可以開始下一個活動。

+1

對於其他方法,您可以使用startActivityForResult()調用活動B,並在您的onActivityResult()方法中調用.show()。 – Jems 2011-02-07 22:58:34