0

我有三个带有菜单的活动。跨菜单可以切换活动。我将 'android:launchMode="singleInstance' 带到了 AndroidManifest,因为我保留了对每个 Activity 的修改。

 ------------------
|                  |
|                  |
|                  |
|        A         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|##A##|  B  |  C   |
 ------------------
      A Activity

 ------------------
|                  |
|                  |
|                  |
|        B         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|  A  |##B##|  C   |
 ------------------
      B Activity

 ------------------
|                  |
|                  |
|                  |
|        C         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|  A  |  B  |##C## |
 ------------------
      C Activity

这是正常工作。我的问题是,当我因为要退出而按返回键时,我必须按三下才能关闭应用程序。

我想消除这个程序。因此,当我在 A、B 或 C 活动中,并且我推回键时,将它们全部关闭。不知何故,我想跳回堆栈。

我尝试使用活动标志。例如像这样:

    Intent intent=new Intent(this, B.class);
    intent.setFlag(Intent.FLAG_ACTIVITY_TASK_ON_HOME);
    startActivity(intent);

有了这个,我有两个问题。它只支持 API 11 或更高版本,这不会关闭其他 Activity。(当我再次启动时,我看到其他活动修改仍然存在)
我知道 * Fragment *s,使用这些会容易得多,但我必须在没有 * Fragment *s 的情况下解决。对不起,我的英语不好。

4

3 回答 3

0

您已经知道使用 Fragments 会容易得多,建议使用 Fragments 但是如果您想这样做......在每个新活动开始之前,您都需要调用 finish();

喜欢

Intent intent=new Intent(this, B.class);
startActivity(intent);
finish();

它将完成活动 A 并启动活动 B。这样,如果您在活动 B 中按回,您的应用程序将关闭。

于 2013-04-21T21:21:44.440 回答
0

您想要的是自定义Back活动堆栈:

// Creates an explicit intent for the top activity that will be opened (the map)
Intent resultIntent = new Intent(context, <your_activity>.class);
resultIntent.putExtras(extras);

// The stack builder object will contain an artificial back stack for the
// started Activity. This ensures that navigating backward from the 
// Activity leads out of your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);

// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(<your_activity>.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
stackBuilder.startActivities();

该代码本质上是在做的是,按下回和下一个活动的活动是相同的。这样,当按下返回时,您将存在于主屏幕。

于 2013-04-21T22:46:20.480 回答
0

我想到的唯一一件事是带有标签保存活动的旧式编程。

这里有一个例子http://www.androidhive.info/2011/08/android-tab-layout-tutorial/

如果您不希望标签可见,则可以轻松将它们完全隐藏。

但我个人建议使用片段。

于 2013-04-21T22:28:33.507 回答