【问题标题】:back navigation behavior on androidandroid上的后退导航行为
【发布时间】:2014-01-27 16:21:57
【问题描述】:

我的应用中有一些活动: A - 登录活动 B - 主应用活动 C, D ... - 内部活动 我想实现如下行为:

  1. 当用户选择应用程序图标或从任务列表中选择应用程序时,我希望清除后台堆栈并显示 Activity A
  2. 当用户通过 A 时,按返回活动 B 将退出应用程序
  3. 当内部应用程序中的用户按下返回时,将“正常”运行。

例如:activity stack A -> B -> C -> D 按下返回键第一次(顶部活动为 D)将使 pop 成为栈顶的 D,它将是:A -> B -> C 再次点击(顶部活动是 C)会将我们移动到 A -> B 再次点击会退出应用(如 2 所述)

我通过将android:noHistory="true" 添加到AndroidManifest.xml 中的A 属性来实现(2) 并尝试通过将android:launchMode=singleTop 添加到AndroidManifest.xml 中的A 属性来实现(1),但是当我这样做时(3)被破坏并在D 时单击返回可见将我直接移至 A

我怎样才能全部实现它们?

谢谢!

【问题讨论】:

    标签: android android-activity back launchmode


    【解决方案1】:

    检测返回键按下:

     @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          if (keyCode == KeyEvent.KEYCODE_BACK) {
              //Do what you want, forinstance:
              finish(); //This will close the current Activity and will go back to the previous one
              }
    
          return super.onKeyDown(keyCode, event);
      }
    

    要关闭 D,您可以使用finish();,就像在上面的示例中一样。这将关闭 D 并将您带回到 CCB 相同,您通常应该关闭应用程序。 但如果是这样,您可以调用类似System.exit(0); 的方式关闭应用程序。

    要定义哪个 Activity 是父 Activity,请进入 Manifest.xml 并输入如下内容: 这是给你的 1. 东西:

          <activity  
           android:name=".ActivityD" 
           android:parentActivityName="com.example.ActivityA" >
           <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.example.ActivityA" />
           </activity>
    

    【讨论】:

      【解决方案2】:

      您可以覆盖 onbackpressed 方法和使用的意图

      > Intent intent = new Intent(Intent.ACTION_MAIN);
      > intent.addCategory(Intent.CATEGORY_HOME);
      > intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      > startActivity(intent);
      

      关于活动 b

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多