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

时间:2014-06-27 06:41:19

标签: android android-activity

我正在创建一个Android应用程序,其中有不同的活动连接到Home(MainActivty)活动和反之亦然。每当我从家庭活动中按回键时,我想关闭我的应用程序。但它需要我以前的活动来自哪里。我怎样才能做到这一点。请有人帮助我,我是android的新手。感谢.............

这是我的代码:

  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();

}

3 个答案:

答案 0 :(得分:1)

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

如果您的应用程序有其他机制,例如有一些主页按钮可以从任何导航活动将您带到主屏幕,那么那时打开MainActivity并带有FLAG_ACTIVITY_CLEAR_TOP标记。

因此,通过这样做,您将不会有额外的活动堆栈,而MainActivity的后退按钮将关闭该应用。

编辑:对于您在评论中提到的方案,您必须在首页按钮上使用以下代码。

 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();
    }
});

答案 1 :(得分:0)

onBackPressed方法中使用此行..

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

答案 2 :(得分:0)

我认为这是因为你还没有添加intent flags 试试这个

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) {

                 Intent intent = new Intent(Intent.ACTION_MAIN);
                 intent.addCategory(Intent.CATEGORY_HOME);
                 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 startActivity(intent);
                 finish();
        } 
     })