如何让Android后退按钮工作

时间:2015-12-29 01:23:33

标签: android back-stack

我是Android编程新手,我正试图让Back按钮工作。我读过的所有内容都说当当前活动开始另一个活动时,新活动将被推到Back Stack顶部,当用户按下Back按钮时,当前活动将从堆栈顶部弹出,之前的活动将恢复。我的应用程序中的大多数UI都是以编程方式完成的。这是三个活动的一些简单代码。一般的想法是,当出现MainActivity时,按下按钮,启动活动2。然后在活动2中,按下按钮,启动活动3。此时,如果我按下设备上的系统后退按钮,我的应用程序将退出。为什么UI不会简单地回弹到Activity 2,如果我再次按下系统返回按钮,UI会弹回主活动。我确信我有一些相当基本的东西,但是我很感激任何人都可以提供帮助。谢谢!

focusInput1() {
  this._renderer.invokeElementMethod(
    this.input1ElementRef.nativeElement, 'focus', []);
}

5 个答案:

答案 0 :(得分:2)

  1. 不要使用finish(),因为它会破坏您的活动而不是暂停。如果你不使用finish(),你可以自动使用后退按钮,它将根据堆栈返回。
  2. 如果由于某种原因你需要使用finish(),你可以在每个类中实现覆盖后退键按钮(就像所说的其他答案一样),并在按下后退按钮时手动编写代码以打开特定活动。
  3. 例如:

     @Override
     public void onBackPressed()
     {
         super.onBackPressed();
         startActivity(new Intent(Activity2.this, MainActivity.class);
         finish()
     }
    

答案 1 :(得分:1)

启动activity2和activity3时不要调用finish()。在MainActvity类中实现覆盖onBackPressed,然后在那里调用finish,见下文。

@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
}

答案 2 :(得分:1)

删除finish(); finish()表示您想要近距离Activity

答案 3 :(得分:0)

我只使用一个带有片段的活动。在这种情况下,您可以在主Activity中使用onBackPressed()(仅在app中使用一次)

.logo { margin-right: auto; }

How to implement onBackPressed() in Android Fragments?

的更多信息

答案 4 :(得分:0)

我的建议是,您应该在开始新活动后完成当前活动 然后

@Override public void onBackPressed() { super.onBackPressed(); Intent toOpen = new Intent(CurrentActivity.this,ActivityToOpen.class); startActivity(toOpen); finish() }

这可能对你有帮助。