我如何管理像碎片堆栈这样的活动



我有很多活动。

A是列表活动。

B是形式活动。并动态生成。我连续两次打开此活动。

C是结果活动。

A->B->B喜欢简单的推送新活动。如果结果是成功的,我想在推C.时清除所有表格

A->B->B->C=>A->C.

若Im在C活动中失败,则可以返回如上所述的不同活动。

A->B或A->B->B

当我推送C时,我使用cleartop,但它清除了所有活动——我如何保存A活动的状态。

我如何管理像碎片一样的活动。

*当我从第二个B返回时,第一个B应该打开*

您可以通过以下步骤实现:

  1. AndroidManifest.xml文件中设置ActivityAandroid:launchMode="singleTask"
  2. ActivityA中设置onNewIntent方法,如下所示:

    @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Bundle mBundle = intent.getExtras(); if(mBundle!=null){ String launchActivity = mBundle.getString("activityName"); switch (launchActivity){ case "ActivityD": // This is Activity Name Here it is ActivityD.class startActivity(new Intent(ActivityA.this, ActivityD.class)); break; }
    }
    }

  3. 现在从ActivityC启动ActivityA,如下所示。

    startActivity(new Intent(ActivityC.this, ActivityA.class).putExtra("activityName", ActivityD.class.getSimpleName()));

它将调用ActivityAonNewIntent方法,并将匹配参数并从ActivityA启动ActivityD。因此,您的ActivityA将保留在堆栈中,ActivityD将添加到顶部的堆栈中。

  1. 现在要从A->D实现A->B,您可以在从ActivityD启动ActivityB时调用ActivityD中的finish((方法

关于活动启动模式,请参阅此链接

希望它对你有用!

在活动A上,您不能使用此转到活动B

startActivity(new Intent(Activity_A.this, Activity_B.classs));

从B到C

startActivity(new Intent(Activity_B.this, Activity_C.classs));
finish();

从C到D

startActivity(new Intent(Activity_C.this, Activity_D.classs));
finish();

从D到A

finish();

它将关闭Activity_DResume((Activity_A

当您从活动B启动活动C或从C启动活动D时,您需要调用finish((;预期活动A。喜欢A->D.

Start Activity(new Intent(A.this,D.class));

现在,当您单击活动A-->B,然后单击B-->C,然后单击C-->时,您应该执行

A->B.

Start Activity(new Intent(A.this,B.class));

B-->C

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

C-->D

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

现在,当你按下返回键时,你将返回到活动A。你应该删除所有clearActivityTop((;来自代码。

您可以通过更频繁地使用片段来实现这一点

活动::当一个活动被放在活动的后台时,用户只需按下后退按钮。

活动可以独立存在。

片段::当一个片段被放置到活动中时,我们必须通过在碎片事务。

碎片必须存在于活动中源

通过使用片段,您可以通过使用标签轻松删除任何您想要的页面,但是如果您仍然想使用活动

如果使用startActivityForResult((而不是startActivity((,则根据活动的回报值,您可以立即完成((前置活动以模拟你想要的行为。通过在所有活动中使用此方法可以将此行为级联到活动堆栈,以便从活动D转到活动A。

最新更新