假设我有A-> B-> C-> D活动。
我想永远退出C onBackPressed()
。
如何在这种情况下退出应用程序。我试过FLAG_ACTIVITY_CLEAR_TOP
但没有成功。
我的最低SDK为API 8
。
答案 0 :(得分:3)
使用此代码。
@Override
public void onBackPressed()
{
// TODO Auto-generated method stub
super.onBackPressed();
finish();
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startMain);
}
答案 1 :(得分:1)
public void AppExit()
{
this.finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
/*int pid = android.os.Process.myPid();=====> use this if you want to kill your activity. But its not a good one to do.
android.os.Process.killProcess(pid);*/
}
单击back
按钮
答案 2 :(得分:1)
如果你只想在C中退出onBackPressed(),那么你所要做的就是通过这样做覆盖活动A,B和D中的onBackPressed()
@Override
public void onBackPressed()
{
// TODO Auto-generated method stub
}
这将确保在A,B和D中按下后退键时,应用程序不会关闭。您不需要在活动C中覆盖onBackPressed(),因为默认情况下Android调用finish()。但是,如果要弹出警报对话框,则可以执行以下操作 -
@Override
public void onBackPressed()
{
// TODO Auto-generated method stub
AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
alertbox.setTitle("Are you sure you want to exit the application");
alertbox.setCancelable(false);
alertbox.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
// TODO Auto-generated method stub
finish();
}
});
alertbox.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
}
});
alertbox.show();
}
最后要注意,当您尝试在C中完成活动时,先前的活动会关闭,您应该在开始新活动时调用finish()。
答案 3 :(得分:1)
试试这个: - 在活动A中,
startActivity(new Intent("B"),request_code);
在onActivityResult()函数中,
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == request_code)
{
if(resultCode == RESULT_OK)
{
finish();
}
}
}
现在在活动B中,
startActivity(new Intent("C"),request_code);
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == request_code)
{
if(resultCode == RESULT_OK)
{
setResult(RESULT_OK);
finish();
}
}
}
最后在活动C中,
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
setResult(RESULT_OK);
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 4 :(得分:0)
您可以覆盖Activity C
中后退按钮的功能,并退出应用程序(如果已按下)。试试这个: -
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) { //Back key pressed
//To Do - Exit App in your case
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 5 :(得分:0)
您好,您可以在您要退出的活动中添加此代码
@Override
public void onBackPressed() {
new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle("Exit")
.setMessage("Are you sure you want to close this APP ")
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
})
.setNegativeButton("No", null)
.show();
}
否则您可以参考此Post
答案 6 :(得分:0)
它已经有了发布时间:
http://developer.android.com/intl/es/reference/android/app/Activity.html
this.FinishAffinity();
答案 7 :(得分:0)
使用方法finish();
然后在current_activity的onDestroy中添加以下行以删除强制关闭
@Override
public void onDestroy()
{
android.os.Process.killProcess(android.os.Process.myPid());
super.onDestroy();
}