如何在android应用程序中添加会话?

如何在android应用程序中添加会话?,android,android-activity,Android,Android Activity,我正在制作一个android应用程序,其中有不同的活动连接到Home(MainActivty)活动,反之亦然。每当我在主页活动中按back键时,我都要关闭我的应用程序。但它把我带到了以前的活动,它是从那里来的。我怎样才能做到这一点。请有人在这方面帮助我,我是新的机器人。谢谢 这是我的密码: btn_daily.setOnClickListener(new View.OnClickListener() { @Override public void onCli

我正在制作一个android应用程序,其中有不同的活动连接到Home(MainActivty)活动,反之亦然。每当我在主页活动中按back键时,我都要关闭我的应用程序。但它把我带到了以前的活动,它是从那里来的。我怎样才能做到这一点。请有人在这方面帮助我,我是新的机器人。谢谢

这是我的密码:

  btn_daily.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            Intent i = new Intent(getApplicationContext(), ActivityA.class);
            startActivity(i);
        }
    });

    btn_health.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            Intent i = new Intent(getApplicationContext(), ActivityB.class);
            startActivity(i);
        }
    });

    btn_diet.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            Intent i = new Intent(getApplicationContext(), ActivityC.class);
            startActivity(i);
        }
    });

    btn_exercise.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            Intent i = new Intent(getApplicationContext(), ActivityD.class);
            startActivity(i);
        }
    });

    btn_yoga.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            Intent i = new Intent(getApplicationContext(), ActivityE.class);
            startActivity(i);
        }
    });

    btn_help.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            Intent i = new Intent(getApplicationContext(), ActivityF.class);
            startActivity(i);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        dialogOnBackPress();

        return true;
    }
    return super.onKeyDown(keyCode, event);
}

protected void dialogOnBackPress() {

    new AlertDialog.Builder(this)
            .setTitle("Exit Alert !!")
           .setMessage("Are you sure you want to exit?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    finish();
               }
           })
           .setNegativeButton("No", null)
           .show();

}

on backpressed
方法中使用此行

startActivity(new Intent(currentActivity.this,HomeActivity.class"));
finish();

我认为这是因为您没有添加
intent标志
试试这个


除了
MainActivity
,其他活动似乎也有一些机制可以导航到其他活动。因此,在导航到其他活动时,不要忘记使用
finish()
销毁当前活动

如果您的应用程序有其他机制,比如有一个home(主页)按钮,可以从任何导航活动进入主屏幕,那么此时请使用
FLAG\u activity\u CLEAR\u TOP
FLAG打开
main activity

因此,通过这样做,您将不会有额外活动的后台堆栈,并且
main活动的“后退”按钮将关闭应用程序

编辑:对于您在评论中提到的场景,您必须在单击主页按钮时使用以下代码

 btn_home.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {

        Intent i = new Intent(CurrentActivity.this, MainActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
        finish();
    }
});

它在工作。。。。但是,当我第一次再次启动应用程序并在第二次尝试时成功启动时,start会给出一条错误消息“不幸的是,应用程序已停止”。如何删除此错误。如果它正在工作,请向上投票回答:D你能发布日志cat错误吗?谢谢你的帮助…你的答案有一半是正确的,剩下的部分,我想出来了。是的..你是对的,有一个主页按钮可以将你从任何导航活动带到主屏幕,那么我必须为此做什么?谢谢你的帮助。。。。现在我明白了旗子活动的概念。这就是我想要的东西……:)@Zohaib太好了。需要注意的一点是,在使用这种机制时,在导航到其他活动时,不能完成MainActivity或HomeActivity。
 btn_home.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {

        Intent i = new Intent(CurrentActivity.this, MainActivity.class);
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
        finish();
    }
});