应用崩溃中的Android后退操作按钮结果

Jer*_*emy 0 java android back-button

我正在构建一个由3个活动组成的新应用程序,即: - 启动画面 - 活动A - 活动B,以及 - 活动C.

来自活动用户可以进行以下两项活动:

A - > B - > C(来自行为A用户可以转到B然后转到C).A - > C(来自行为A用户可直接进入C).B - > C(来自B用户可以转到C).

我还在活动之间传递Serializable intent Extra.

我遇到的问题是每当我按下操作栏(左上角)上的后退按钮时,它总会使我的应用程序崩溃(错误:NULL指针异常).

我试图将此代码放在我的所有活动上.

@Override
public void onBackPressed() {
    this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
}
Run Code Online (Sandbox Code Playgroud)

我尝试以某种方式模仿物理后退按钮行为,因为当用户按下物理后退按钮时它正在工作.但也有点抛出错误.

要么

public void onBackPressed(){
  super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)

或者(这一个字面上重新启动应用程序,这是不鼓励的,因为它从启动屏幕重新启动应用程序).

public void onBackPressed(){
  super.onBackPressed();
  finish();
}
Run Code Online (Sandbox Code Playgroud)

有谁知道实现后退按钮的适当方法?

set*_*ere 7

左上角的按钮不是"后退"按钮,它是"向上"按钮,它只是操作栏中的一个按钮,onBackPressed指的是按下的硬件后退按钮.使用back和up的导航不一定相同("返回"意味着转到我之前的位置,而"up"意味着转到应用层次结构中的上层).有关更多信息,请查看http://developer.android.com/design/patterns/navigation.html.

(另外,尽量避免启动画面,他们在Android设计模式中非常气馁)

编辑:我忘了提到如何实际处理"向上"按钮.您可以在活动的onOptionsItemSelected上执行此操作:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        // Handle "up" button behavior here.
        return true;
    } else {
        // handle other items here
    }
    // return true if you handled the button click, otherwise return false.
}
Run Code Online (Sandbox Code Playgroud)