0

我在 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 会调用父 Activity(主 Activity)的 onActivityResult 方法:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
    if(resultCode == 5) {
        finish()
    } 
}

我期望的是应用程序将被关闭。我得到的是Android调用onResume,然后调用onCreate方法,从头开始启动向导。然后,如果从这个新向导中我再次按下,应用程序将按预期关闭。

谢谢你的帮助!

4

1 回答 1

0

试试这个而不是finish();退出整个应用程序。

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

您之前在后台的活动可能会通过您的代码进入前台。

希望能帮助到你。

于 2014-12-10T12:16:09.043 回答