android - onBackPressed()不适合我

use*_*745 9 android

我有一个程序.第一个活动是启动画面,第二个是登录,第三个是列表视图菜单活动,然后是其他2个活动.启动画面在3秒后消失,如果登录复选框记住我,则会直接进入菜单页面.
我覆盖onBackPressed菜单活动中的功能,以便在用户从菜单中单击后直接退出程序.但是,如果我经历了其他活动,它就不会退出; 它会转到堆栈中的上一个活动,并且对话框不会弹出,虽然它实际上确实会出现一秒钟并且立即消失.

这是我的 onBackPressed功能

public void onBackPressed() {
    // super.onBackPressed();
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you Sure want to close the Application..?")
        .setCancelable(false)
        .setTitle("EXIT")
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dialog.cancel();
            }
        })
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                finish();
            }
        });
    AlertDialog alert = builder.create();
    alert.show();
    //super.onBackPressed();
}
Run Code Online (Sandbox Code Playgroud)

Rag*_*dan 10

我建议你按照WarrenFaith的建议在下面的评论中使用ActionBar.请查看下面的链接以获取更多信息

http://developer.android.com/design/patterns/navigation.html

这是一个相同的教程

http://www.vogella.com/articles/AndroidActionBar/article.html

你可以用它.然而,这似乎也是一个糟糕的设计.您可以查看以下评论​​以了解原因

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        onBackPressed();
    }
    return super.onKeyDown(keyCode, event);
}

public void onBackPressed() {
    Intent myIntent = new Intent(MyActivity.this, MainActivity.class);

    myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(myIntent);
    finish();
    return;
}
Run Code Online (Sandbox Code Playgroud)

当你回来按下清除活动堆栈和naviagate到MainActivity时,Onn后退按钮按下当前活动.

另外我建议不按下后退按钮显示警告对话框.这是一个糟糕的设计.你可以搜索SO.我读了同样的东西,并通过commonsware回答

  • 事实上,这就是所谓的"导航"结构进入场景并告诉你:"嘿,你可以使用后退按钮,但是如果你想回家,只需按下我的操作栏中的图标就可以了在家".即使是新的SlideMenu也是一个很好的用户体验解决方案.是的:我希望它会回到40个屏幕,因为它是后退按钮存在的原因.您是否希望浏览器中的后退按钮带您进入起始页面?你在"用户想要退后一步"或"他想要一路走下去"之间的区别在哪里?我希望我说得清楚...... (3认同)