Android完成()StartActivityForResult无效

时间:2014-12-10 12:13:39

标签: android android-activity onactivityresult close-application

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方法,从头开始启动向导。然后,如果从这个新向导再次按下,应用程序将按预期关闭。

感谢您的帮助!

1 个答案:

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

您之前的活动可能会在您的代码中显示在后台。

希望它有所帮助。