在android上返回导航行为

时间:2014-01-27 16:21:57

标签: android android-activity back launchmode

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

  1. 当用户选择应用程序图标或从任务列表中选择应用程序时,我希望清除后备堆栈并显示活动 A
  2. 当用户通过 A 按下后面的活动 B 将退出该应用
  3. 当内部app中的用户按下后将“正常”运行。
  4. 例如:活动堆栈 A - &gt; B - &gt; C - &gt; D 第一次按下后退按钮(热门活动 D )将弹出堆栈顶部的 D ,它将是:< strong> A - &gt; B - &gt; C 再次点击(热门活动 C )会将我们移至 A - &gt; B 并再次点击将退出应用(如2中所述)

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

    我怎样才能实现它们?

    谢谢!

2 个答案:

答案 0 :(得分:0)

检测返回键按下:

 @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 ,并将您带回 C 。 与 C B 相同,您通常不应该关闭应用。 但如果是这样,你可以调用像System.exit(0);这样的somtehing来关闭App。

要定义哪个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>

答案 1 :(得分:0)

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

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

活动b