确认返回提示以退出应用程序

3
我目前正在开发一款使用安卓设备后退按钮频繁的应用程序。我想知道如何检查当前活动是否是最后一个活动,如果用户再次按下后退按钮,则不会退出应用程序,除非用户再次按下后退按钮,就像9gag应用程序一样。
谢谢!

1
如何在Android活动中显示对话框以确认用户是否希望退出? - Rohit5k2
4个回答

7
@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
        .setIcon(android.R.drawable.ic_dialog_alert)
        .setTitle("Closing Activity")
        .setMessage("Are you sure you want to close this activity?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            finish();    
        }

    })
    .setNegativeButton("No", null)
    .show();
}

4
使用方法Activity.isTaskRoot(),您可以检查用户按下返回按钮时是否退出应用程序。
然后您只需要覆盖onBackPressed()以与通常不同的方式处理它。

3

以下是例子:

private boolean doubleBackToExitPressedOnce;
@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    }
    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
    }

    this.doubleBackToExitPressedOnce = true;
    Toast.makeText(this, this.getResources().getString(R.string.exit_toast), Toast.LENGTH_SHORT).show();

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce = false;
        }
    }, 2000);
}

DrawerLayout块是可选的。


0

这个方法不适用于OnBackpress

@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
        .setIcon(android.R.drawable.ic_dialog_alert)
        .setTitle("Closing Activity")
        .setMessage("Are you sure you want to close this activity?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which) {
            finish();    
        }

    })
    .setNegativeButton("No", null)
    .show();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接