拦截后退按钮

时间:2010-09-01 03:29:44

标签: android function

我正在编写一个有两个活动的应用程序,当用户按下第二个活动的后退按钮时,会弹出一个对话框,要求用户确认操作。那么我该如何拦截呢?我非常怀疑这个问题,后台堆栈是操作系统本身的一部分。有没有人找到解决方法?

4 个答案:

答案 0 :(得分:50)

在活动中,您可以覆盖

  

onBackPressed()

编辑:这是api lvl 5+:/ for 4及以下你必须覆盖onKeyDown()

答案 1 :(得分:11)

只需覆盖活动中的onKeyDown方法,然后查找后退按钮。返回true以便消耗该事件。

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //Do something here
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

答案 2 :(得分:5)

正如schwiz指出的那样,您需要覆盖活动类中的onBackPressed()方法(http://developer.android.com/reference/android/app/Activity.html#onBackPressed())。

我只是想补充一点,如果您确实希望在某个阶段继续或访问标准后退操作(在显示对话框之后),那么您只需致电super.onBackPressed()ActivityName.super.onBackPressed()来自活动的任何地方。

答案 3 :(得分:2)

通过the docs,如果可以,请不要使用onBackPressed。现在建议使用onBackPressedDispatcher.addCallback(this) {}。有一个片段示例:

class MyFragment : Fragment() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // This callback will only be called when MyFragment is at least Started.
        val callback = requireActivity().onBackPressedDispatcher.addCallback(this) {
            // Handle the back button event
        }

        // The callback can be enabled or disabled here or in the lambda
    }
    ...
}