我有一個在Android中使用後退按鈕的問題。我知道我可以使用onBackPress()方法來處理它,但我需要一種方法來執行onResume lifecyle中的後退按鈕事件。我必須這樣做的原因是,我已經從onResume方法的另一個類中啓動了一個計時器。當我按下後退按鈕時,此計時器應停止。但是當我使用onBackPress()方法來停止它時,我得到了一個NullPointerException,因爲定時器從未開始。當我使用一個按鈕來停止onResume方法內的定時器時,定時器會正確停止。所以quastion是我可以使用另一個按鈕而不是後退按鈕? 或者當用戶按下按鈕時,如何使用onResume中的後退按鈕事件?使用另一個按鈕,而不是後退按鈕
回答
不需要做這種額外的工作,如果你需要所有這些東西,只是因爲定時器空指針在停止計時器之前寫入條件如下。
讓你的定時器變量public static
然後
if(YouActivity.timer!=null)
YouActivity.timer.stop();
這很簡單說過。非常感謝你! –
您可能正在創建計時器作爲原始Activity
的變量或子項。當Activity
暫停(或離開屏幕)時,該變量可能被破壞。這就是按鈕工作的原因(相同Activity
),而不是onBackPressed
,在另一個Activity
中調用。
您需要在另一個線程上運行的靜態變量或全局變量 - 如Service
或Application
對象。 Application
對象是最後一招,因此請首先查看Service
。
嘗試增加FLAG_ACTIVITY_CLEAR_TOP
調用onBackPressed()
之前,從 http://developer.android.com/reference/android/content/Intent.html:
如果設置,以及正在啓動的活動在目前的任務已經運行,然後,而不是推出該活動的一個新實例,其上的所有其他活動將被關閉,並且這個意圖將作爲新的意圖被傳遞到(現在在上面)舊活動。
我已經完全理解這個問題: -
- 我sugestiion這是需要解決的問題OnBackPressed()方法添加 第一點定時器將被殺死並停止方法。
請澄清你的答案,並可能添加一些代碼說明它。正如目前所寫,很難理解你的意思。可能你應該把一個句子分成一系列步驟,以便它變得更清晰。 – YakovL
- 1. 另一個手柄後退按鈕而是例如
- 2. 應用按後退按鈕當按下後退按鈕
- 3. 不按後退按鈕
- 4. 後退按鈕
- 5. Android使用後退按鈕
- 6. 後退按鈕使用JavaScript
- 7. iframe後退按鈕問題(不想後退按鈕影響iframe)
- 8. 單擊一個按鈕後是否可以避免控件驗證,而不是單擊另一個按鈕後?
- 9. iOS:prepareForSegue回調的另一個方向(即後退按鈕按下)
- 10. 按後退按鈕到另一個活動
- 11. IOS 9.3禁用iPhone上的後退按鈕後退按鈕
- 12. 後退按鈕不使用鈦SDK
- 13. 按鈕被點擊後,另一個按鈕就不會點擊
- 14. 後退按鈕不顯示
- 15. 後退按鈕不回去
- 16. 不需要後退按鈕
- 17. 後退按鈕不顯示
- 18. 後退按鈕按下
- 19. 後退按鈕被按下
- 20. LogOut按鈕創建後退按鈕
- 21. 後退按鈕「和」編輯按鈕
- 22. 檢測按鈕的後退按鈕
- 23. PHP後退按鈕
- 24. 後退按鈕android
- 25. UINavigation後退按鈕
- 26. UITableView後退按鈕
- 27. Android後退按鈕
- 28. 後退按鈕NSPopover
- 29. Laravel後退按鈕
- 30. Jquery後退按鈕。
你不能對其他生命週期方法中的關鍵事件作出反應,因爲關鍵事件是在它們自己的回調中傳遞的,直到你從任何現有的UI線程回調中返回都不會發生。您很可能需要重新設計您的設計,並使用顯式狀態標誌或隱式狀態標誌(例如,在您嘗試使用它之前,看看導致您的NPE的事物是否非空) –