按下“返回”按钮时提示用户

时间:2011-06-09 09:18:46

标签: android android-activity

询问用户的哪个好地方,当他点击后退按钮时是否要退出应用程序?我考虑了onPauseonStop,但只要应用程序落后于其他应用程序,这些方法就会触发。

更新: 应用程序还应询问用户是否尝试从按钮(在应用程序本身)中退出应用程序,而不是后退硬键。

5 个答案:

答案 0 :(得分:18)

  

要求用户允许关闭   应用

您可以通过以下方式完成此操作;

/**
 * Exit the app if user select yes.
 */
private void doExit() {

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(
            AppDemoActivity.this);

    alertDialog.setPositiveButton("Yes", new OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            finish();
        }
    });

    alertDialog.setNegativeButton("No", null);

    alertDialog.setMessage("Do you want to exit?");
    alertDialog.setTitle("AppTitle");
    alertDialog.show();
}
  

询问用户的好地方,   是否要退出应用程序   何时(s)他点击了后退按钮?

因为,你想要提示用户按照其他人的建议点击后面的硬按钮,你可以覆盖onBackPressed()方法并从那里调用上面的方法;

@Override
public void onBackPressed() {

    doExit();
}

根据@Martyn的建议,您可以使用onKeyDown来实现相同目标;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode == KeyEvent.KEYCODE_BACK) {
        doExit();
    }

    return super.onKeyDown(keyCode, event);
}
  

该应用还应询问用户是否   试图从按钮退出应用程序   (在app中),而不是Back hard   键。

为此,请从按钮上点击doExit() onClick;

Button exitButton = (Button)findViewById(R.id.exitButton);
exitButton.setOnClickListener(new android.view.View.OnClickListener() {

    @Override
    public void onClick(View v) {
        doExit();
    }
});


相关信息:

答案 1 :(得分:6)

看看这个链接..

您不应该退出申请。

Is quitting an application frowned upon?

答案 2 :(得分:2)

最好的地方是onBackPressed。你要记住的唯一一件事是应用程序表现“正常” - 即用户按下它们时应该转到上一个屏幕 - 如果他们按回主屏幕,那么问他们是否意味着什么是好的退出应用程序。

答案 3 :(得分:2)

如果仅在用户按下时(不在家或等等),请使用onBackPressed

医生说:

  

在活动检测到时调用   用户按下后退键。该   默认实现只是完成   当前的活动,但你可以   覆盖它以做任何你想做的事。

因此,如果您抓住背压并且不做任何事情,则活动不会退出。 如果您想退出,请使用finish()

答案 4 :(得分:0)

这是一个相当老的问题,但是在Google上排名很高,因此我认为它可能需要更新

@Override
public void onBackPressed() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Do you want to exit the app?");

    // if user presses "Exit", then he is allowed to exit from application
    builder.setPositiveButton("Exit", (dialog, which) -> finish());

    // if user selects "Stay", just cancel this dialog and continue with app
    builder.setNegativeButton("Stay", (dialog, which) -> dialog.cancel());

    builder.create().show();
}