如何在 Android 上设置返回键操作

How to set back key action on Android

我正在开发一个 Android 应用程序,该应用程序从用作菜单屏幕的 activity 开始(我将此 activity 称为菜单 activity ).

有一个按钮可以将应用程序移动到另一个 activity,用户可以在其中输入他们的姓名(我将此 activity 称为姓名 activity),然后应用 return 到菜单 activity。

输入我的名字后,(我现在是这样的:菜单 - 名字 - 菜单)当我按下后退按钮时,它回到名字 activity,名字仍然存在于编辑文本字段。

我想知道是否有一些方法可以更改后退键的功能以避免转到名称 activity,而是 return 到主 activity(层次结构是 - 主 - 菜单 - 名称)。

此外,有什么方法可以防止名称保留在 EditText 中吗?

提前致谢。

我对层次结构有点困惑,但无论哪种方式,如果您想清除任何以前的活动,这就是您要找的东西: Clearing Activity Backstack

否则,请在 Activity 上调用 finish(),然后再更改。这将清除 EditText

在你的 name activity 中,你有一个提交数据字段的按钮,对吗?

你可能有这样的东西:

Intent in = new Intent(this, menu_activity.class);
startActivity(in);

您应该删除该行并将其替换为 finish();

所以你假设你有以下内容:

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Save the data to whatever you would like (database, variable, etc.)
       finish();
    }
});

这是因为当你创建一个新的意图时,它被放置在 activity 堆栈中,(而当前的 activity 'remains' 在他当前的堆栈中状态,但只是不可见)。

例如(A是你的菜单activity,B是名称):

startIntentA(); ---> stack is: A    (activity A is now visible)
startIntentB(); ---> stack is: AB   (activity B is now visible)
startIntentA(); ---> stack is: ABA  (activity A is now visible)

所以当你按下后退按钮时,当前的 activity 被销毁,它回到堆栈上最近打开的 activity:

stack is now ABA
backButton(); ---> A gets destroyed. Stack is: AB (activity B is now visible)
backButton(); ---> B gets destroyed. Stack is: A  (activity A is now visible)

因此,当您不在 activity name 上的按钮上启动新意图时,就没有 activity 可以返回到:

startIntentA(); ---> stack is: A  (activity A is now visible)
startIntentB(); ---> stack is: AB (activity B is now visible)
finish();       ---> stack is: A  (the original activity is now visible)

如果你想保存用户输入,即使他们按下后退按钮,你可以覆盖 onBackPressed() 方法:

@Override
public void onBackPressed() {
    // Save the data to whatever you would like (database, variable, etc.)
    finish();
}

注意:您可以通过设置setCancelable(false);.

禁止使用后退按钮取消当前activity