如何按下返回按钮在机器人编程?

在我的应用程序中,我有一个注销功能。如果用户点击注销它去主屏幕。现在,我退出我的应用程序按后退按钮。但我想要的是,我需要自动退出(即编程) ,就像后退按钮功能一样。我知道通过调用 Finish ()可以实现这个功能。但问题是,它会转到之前的活动。

129550 次浏览

在您的活动中覆盖它之后调用 onBackPressed

支持 onBackPressed(),因为: 空气污染指数五级

@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();
}

您不需要覆盖 onBackPressed()-它已经定义为当用户按下返回按钮时您的活动将默认执行的操作。因此,只要调用 onBackPressed()时,你想“程序化地按”后退按钮。

不过,这只会导致调用 finish();)

我觉得你搞不清后退按钮的作用。默认情况下,它只是一个对 finish()的调用,因此它只是退出当前活动。如果你有什么背后的活动,该屏幕将显示。

您可以做的是,当从 Login 启动您的活动时,添加一个 CLEAR _ TOP 标志,这样当您退出您的活动时,登录活动不会出现。

有时候重写 onBackPress ()方法是很有用的,因为在处理片段的情况下,如果您按下 backButton,它们会返回到前一个片段。

你可以简单的使用 onBackPress () ;

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

只需在您的第一个类’(登录活动) onPuse () ; method 中添加 Finish () ; ,就可以了

对于 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"添加的片段,显示在屏幕上的前一个。

public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);


intent.addCategory(Intent.CATEGORY_HOME);


intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


startActivity(intent);


}

//确保在 onCreate 方法外部使用