我有一个在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的事物是否非空) –