【问题标题】:quit app by NavUtils in androidNavUtils在android中退出应用程序
【发布时间】:2014-01-22 06:41:23
【问题描述】:

我有很多活动,必须遍历导航抽屉中的所有活动。我想从主屏幕退出应用程序是否有许多活动尚未完成。为此,我使用了 NavUtils,因为我们可以从“NavUtils.navigateUpFromSameTask(MyClass.this)”方法移至父活动。例如,我在这里有两个活动 splashScreen.class 和 ManinActivity.class 我通过完成 splashScreen 从 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();
}

这是清单代码:

<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>

【问题讨论】:

  • @Raghunandan 我读过这篇我只是不知道为什么它会在一些手机上启动 splashScreen 如果已经完成
  • 或者有没有更好的程序让应用程序从特定活动中退出?
  • 通过在覆盖 onPause 中扩展 Activity 并调用 finish() 来创建一个 baseActivity。使您的所有活动都从 BaseActivity 扩展。或清除后台堆栈并调用finish()。但是,当您单击后退按钮时,它应该带您回到上一个活动。这就是它的目的。所以重新考虑你的设计
  • @Raghunandan 我将如何编写代码以完成 BaseActivity 的 onPause 中的所有活动?那么 BaseActivity 的 onPause 方法的运行过程是什么?

标签: java android android-activity activity-finish


【解决方案1】:

当你决定退出应用时,你可以通过做 2 件事来做到这一点

  1. 为活动设置一个特定的resultCode,表示QUIT_APP并完成活动

  2. 在所有活动中覆盖函数 onActivityResult(或从单个活动继承) 对于 resultCode QUIT_APP 重复步骤 a。

基本上它会级联你所有的活动

编辑:

也在您的代码中调用 startActivityForResult 而不是 startActivity。 更多信息请参见https://stackoverflow.com/a/1124988/1393632

【讨论】:

    【解决方案2】:

    我已经做到了。你可以通过像 DashBoard 这样的活动来完成你的应用程序,它只在 Oncreate 方法中调用 finish() 方法。& 如果你想退出你的应用程序,你可以输入 Flag_Activity_Clear_Top 和 Flag_Activity_New_task 的意图,如这个:

    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);
    

    【讨论】:

      猜你喜欢
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      相关资源
      最近更新 更多