我有一個對話框彈出窗口來指示我想要運行一個活動的時間。 似乎很簡單,但很難確定活動何時開始。 如果用戶在G1上打開鍵盤並進入橫向,則會重新執行onCreate方法的活動。應用程序生命週期。如何僅在應用程序啓動時運行某些操作
我不能爲該類創建靜態,甚至不能創建應用程序類,因爲我無法確定「應用程序」何時消失。即使在破壞唯一的活動後,應用程序顯然仍然活着。
有沒有方法可以確定onCreate是因爲鍵盤被擴展或橫向模式調用而被調用的?
感謝
我有一個對話框彈出窗口來指示我想要運行一個活動的時間。 似乎很簡單,但很難確定活動何時開始。 如果用戶在G1上打開鍵盤並進入橫向,則會重新執行onCreate方法的活動。應用程序生命週期。如何僅在應用程序啓動時運行某些操作
我不能爲該類創建靜態,甚至不能創建應用程序類,因爲我無法確定「應用程序」何時消失。即使在破壞唯一的活動後,應用程序顯然仍然活着。
有沒有方法可以確定onCreate是因爲鍵盤被擴展或橫向模式調用而被調用的?
感謝
我試着創建一個應用程序的子類,但我仍然無法確定它何時會消失。
我試過另一種方法。 我在清單中添加的活動中,
android:configChanges="orientation|keyboardHidden"
然後在活動範圍內我加入,
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
這導致我的onCreate方法沒有被調用時的方向變化或鍵盤被隱藏。我不確定爲什麼我的觀點在任何一種情況下看起來都是正確的,但是效果很好。事實上,它甚至可以處理輸入到顯示的對話框中的文本。方向改變時文本保持不變。
有沒有辦法來確定 的onCreate被稱爲因 正在擴展鍵盤或 風景模式調用?
有一種辦法:
1.檢查鍵盤正在擴展
2.一種方法來檢查當前的方向(橫向或縱向)
確定的onCreate()是否已經所謂或不需要你的一些工作。例如,你可以有一個變量來標記onCreate()的完成並將它保存在Activity的狀態包中。
您可以通過檢查onCreate()來確定這是第一次運行還是由於配置更改而重新啓動,通過從1,2和標誌的值中取出某些意義。
這只是一個建議;可能存在更好的解決方案
在onSaveInstanceState中,您可以存儲一個標誌,指示它是否已經運行。如果應用程序正在恢復,然後在onCreate(Bundle savedInstanceState)中,savedInstanceState將具有該變量,因此您可以檢查savedInstanceState!= null和saveInstanceState.get(「restoreoring」)!= null,然後不顯示對話框。
這是最好的方法。通過添加行android:configChanges =「...「你已經告訴Android,在這種情況下,它不需要重新開始活動,只需重新繪製它們(實際上很少有人知道這個功能很有趣 - 我知道直到最近才知道 - 但是這是一個簡單的解決方案!)順便說一下,如果這種技術解決了您的問題,您能否將自己的答案標記爲「已接受」?這會將此問題從未解決問題的列表中刪除。 – 2010-03-27 12:01:41