如何以编程方式在android中按回按钮?

时间:2012-05-23 11:14:32

标签: android android-activity activity-finish

在我的应用中,我有退出功能。如果用户单击注销,则会转到主屏幕。现在我按退回按钮退出我的应用程序。但我想要的是我需要像后退按钮功能一样自动退出(即以编程方式)。我知道通过调用finish()将完成功能。但问题在于之前的活动。

7 个答案:

答案 0 :(得分:114)

支持

onBackPressed()自:API级别5

 @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_BACK)) {
                onBackPressed();
            }
    }

@Override
    public void onBackPressed() {
        //this is only needed if you have specific things
        //that you want to do when the user presses the back button.
        /* your specific things...*/
        super.onBackPressed();   
    }

答案 1 :(得分:38)

您无需覆盖onBackPressed() - 它已被定义为当用户按下后退按钮时您的活动默认执行的操作。因此,只要您想“以编程方式按下”后退按钮,就可以致电onBackPressed()

这只会导致调用finish();)

我认为你对后退按钮的作用感到困惑。默认情况下,它只是对finish()的调用,因此它只退出当前活动。如果您在该活动后面有某些内容,则会显示该屏幕。

您可以做的是从登录中启动您的活动时,添加一个CLEAR_TOP标志,以便当您退出时不会出现登录活动。

答案 2 :(得分:8)

有时候覆盖方法onBackPressed()是有用的,因为如果你使用片段而你在它们之间进行更改,如果你按下后退按钮它们会返回到前一个片段。

答案 3 :(得分:5)

在您的活动中覆盖{@ 1}后调用onBackPressed

答案 4 :(得分:1)

您可以简单地使用onBackPressed();

或者如果您正在使用片段,则可以使用getActivity()。onBackPressed()

答案 5 :(得分:0)

只需添加finish();在您的第一堂课(登录活动)中onPause();方法。就这样

答案 6 :(得分:0)

对于 Kotlin 用户和使用片段:

如果您在活动中导航,请使用 finish(),但对于片段,您可以通过片段标签移除片段。

导航到片段时使用:

myFragment = myFragment(this)            

parentFragmentManager.beginTransaction()
                .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
                .add(R.id.baseFragmentContainer, myFragment, "MYFRAGMENT")
                .addToBackStack("myFragmentNameInStack")
                .commit()

然后,当点击您的特定按钮并模拟按下“后退按钮”时,请执行以下操作:

    binding.someButton.setOnClickListener {
        activity?.supportFragmentManager?.
        popBackStack("myFragmentNameInStack", FragmentManager.POP_BACK_STACK_INCLUSIVE)
    }

这将删除由标签 "myFragmentNameInStack" 添加的片段,在屏幕上显示前一个片段。