Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过android中的NavUtils退出应用程序_Java_Android_Android Activity_Activity Finish - Fatal编程技术网

Java 通过android中的NavUtils退出应用程序

Java 通过android中的NavUtils退出应用程序,java,android,android-activity,activity-finish,Java,Android,Android Activity,Activity Finish,我有很多活动,必须从导航抽屉遍历所有活动。我想从主屏幕退出应用程序,不管有多少活动尚未完成。为此,我使用了NavUtils,因为我们可以从“NavUtils.navigateUpFromSameTask(MyClass.this)”方法移动到父活动。例如,我在这里有两个活动:splashScreen.class和ManinActivity.class i startactivity,通过完成splashScreen,splashScreen是MainActivity的父类,通过退出MainAct

我有很多活动,必须从导航抽屉遍历所有活动。我想从主屏幕退出应用程序,不管有多少活动尚未完成。为此,我使用了NavUtils,因为我们可以从“NavUtils.navigateUpFromSameTask(MyClass.this)”方法移动到父活动。例如,我在这里有两个活动:splashScreen.class和ManinActivity.class i startactivity,通过完成splashScreen,splashScreen是MainActivity的父类,通过退出MainActivity的应用程序,某些手机上的应用程序完成,但在某些手机上,应用程序转到父活动的onCreate方法,因此称为splashScreen。我不明白为什么会发生这种情况。如果您知道更好的程序,或者如果我做错了什么,请帮助我这是我从MainActivity退出应用程序的代码:

NavUtils.navigateUpFromSameTask(MainActivity.this);
我从splashScreen开始MainActivity,如下所示:

public void StartMainActivity()
{
    Intent mainActivity = new Intent(splashScreen.this,MainActivity.class);
    startActivity(mainActivity);
    finish();
}
Intent intent = new Intent(MainActivity.this, DashBoardActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
以下是清单代码:

<activity
        android:name=".MainActivity"
        android:label="StoneAge"
        android:parentActivityName="com.experlabs.brandappy.splashScreen">
        <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.experlabs.brandappy.splashScreen" />
    </activity>

当你决定退出应用程序时,你可以做两件事

  • 为活动设置特定的resultCode,这意味着退出应用程序并完成活动

  • 在所有活动中重写函数onActivityResult(或从单个活动继承) 对于resultCode退出应用程序,重复步骤a

  • 基本上,它将级联您的所有活动

    编辑:

    在代码中,也可以调用startActivityForResult而不是startActivity。
    查看此以了解更多信息。您只需创建一个类似DashBoard的活动即可完成应用程序,该活动只调用Oncreate方法中的finish()方法。&在要退出应用程序的位置,您可以输入Flag_activity_Clear_Top和Flag_activity_New_任务,如下所示:

    public void StartMainActivity()
    {
        Intent mainActivity = new Intent(splashScreen.this,MainActivity.class);
        startActivity(mainActivity);
        finish();
    }
    
    Intent intent = new Intent(MainActivity.this, DashBoardActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    finish();
    
    如果您想通过跳过中间活动来调用任何以前的活动,您可以将该活动添加到xml中提到的父活动中,当您需要导航时,只需输入代码:

    NavUtils.navigateUpFromSameTask(this);
    

    查看docs@Raghunandan我读过这篇文章,我只是不知道为什么它会在一些手机上启动splashScreen,如果已经完成了,或者是否有更好的程序从特定活动中退出应用程序?通过在暂停时扩展覆盖中的活动并调用
    finish()
    ,来创建基本活动。使您的所有活动都从BaseActivity扩展。或者清除backstack并调用
    finish()
    。但是,当您单击“后退”按钮时,它应该会将您带回上一个活动。这就是它的本意。所以你要重新考虑你的计划design@Raghunandan如何编写代码以在BaseActivity的onPause中运行“完成所有活动”?那么在BaseActivity的Pause方法上运行的过程是什么呢?