0

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

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

例如:活动堆栈A -> B -> C -> D 第一次按下后退按钮(顶部活动是D)将弹出堆栈顶部的D,它将是:A -> B -> C点击再次(顶部活动是C)将我们移动到A -> B并再次单击将退出应用程序(如 2 中所述)

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

我怎样才能实现它们?

谢谢!

4

2 回答 2

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();在上面的示例中使用 like in。这将关闭D并将您带回C。与CB相同,您通常应该关闭应用程序。但如果是这样,你可以调用 somtehinSystem.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>
于 2014-01-27T16:40:48.873 回答
0

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

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

关于活动 b

于 2014-01-27T16:49:39.123 回答