我正在创建一个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();
}
答案 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();
}
})