Android在使用finish()函数时出现问题:
我试图获得以下行为:当用户第一次午餐时,我想启动一个向导程序。我正在使用具有不同碎片的PageViewer。如果用户在第一页中按下后退按钮,我希望应用程序关闭。
我在这里做了什么:
在主要活动中,我检查用户是否第一次启动了该应用程序。如果是这种情况,那么我开始新活动(向导)
if(firstTime) {
// here activity is the main activity
Intent i = new Intent(activity, Wizard.class);
activity.startActivityForResult(i,0);
}
在向导活动类中,我覆盖了onBackPressed方法:
@Override
public void onBackPressed(){
if(pager.getCurrentItem() == 0) {
setResult(5);
finish();
} else{
// code
}
}
调用finish()时,Android会调用父活动的onActivityResult方法(主要活动):
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
if(resultCode == 5) {
finish()
}
}
我期望申请被关闭。我得到的是Android调用onResume,然后调用onCreate方法,从头开始启动向导。然后,如果从这个新向导再次按下,应用程序将按预期关闭。
感谢您的帮助!
答案 0 :(得分:0)
尝试使用此代替finish();
来退出整个应用程序。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
您之前的活动可能会在您的代码中显示在后台。
希望它有所帮助。