android中“后退”按钮的默认操作的代码是什么?

vis*_*ksh 3 android

我显示了一个编辑文本和一个保存按钮。当按下后退键时,我希望它们消失(如果它们可见)并且下一次后退将执行后退按钮的默认操作。代码如下:

public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK
                && event.getRepeatCount() == 0) {
            event.startTracking();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                && !event.isCanceled()) {
            if(save.isShown())
            {
                 save.setVisibility(Button.GONE);
                 text.setVisibility(EditText.GONE);
            }
                    //else ???????????????

            return true;
        }
        return super.onKeyUp(keyCode, event);
    }   
Run Code Online (Sandbox Code Playgroud)

上面的代码有以下结果: 1. 当 edittext 和 button 可见时,后退按钮使它们消失但接下来的按下什么都不呈现。虽然如果一直按下后退按钮,我们会回到上一个活动。2.当edittext和button最初不存在时,按下后退按钮会意外停止应用程序。虽然如果保持按下后退按钮,我们会回到上一个活动。

代替 else,我尝试了 finish() 但程序意外停止。返回 false 也结果相同..

zeo*_*nic 5

@Override
public void onBackPressed() {
  doStuff();
}
Run Code Online (Sandbox Code Playgroud)

链接在这里

编辑

等等,长按怎么样?如果我正确地阅读了原始问题,您希望最初的后退键隐藏一些视图,而第二个则表现正常?为什么不只是这样:

private boolean flag = false;

@Override
public void onBackPressed() {
  if(flag) {
    super.onBackPressed();
  } else {
    view.setVisibility(View.GONE);
    flag = true;
  }
}
Run Code Online (Sandbox Code Playgroud)