在Xamarin Android上完成多项活动

时间:2018-05-04 10:43:31

标签: c# android xamarin

我有一个包含多项活动的Xamarin Android应用程序:

我有3项活动 A1 A2 A3 将从活动 X0 中调用:
X0 - > A1 - > A2 - >的 A3

X0 可以是我的应用的任何其他活动,因此我无法访问它的类型。 在活动 A3 我有一个按钮需要完成 A1 A2 A3 并返回 X0

我该怎么做?

由于

3 个答案:

答案 0 :(得分:0)

由于活动X0已经在后堆栈中,您可以执行以下操作 -

Intent intent = new Intent(A3.this, X0.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

通过添加标志,活动X0顶部的所有活动都将关闭,X0将变为可见,并且也不会重新启动。

答案 1 :(得分:0)

在这种情况下,当您处理最后一个活动(A3)时,设置这些标志应该可以解决问题。 Intent.FLAG_ACTIVITY_NEW_TASK Intent.FLAG_ACTIVITY_CLEAR_TASK

或者,您可以使用允许您直接从A3转换的片段 - > X0,无需完成A1或A2。

答案 2 :(得分:0)

好的,所以我找到了一个有效的解决方案,但我觉得它非常不洁净:

当我在活动 X0 中开始我的活动 A1 时,我将活动的类型 X0 作为字符串(使用标记) 。

Intent newActivity = new Intent(this, typeof(A1));
newActivity.PutExtra("endActivity", typeof(X0).Name);
StartActivity(newActivity);

在活动 A1 上,我得到这样的标志:

string endActivityType = Intent.GetStringExtra("endActivity");

然后,当我开始活动 A2 A3 时,我会继续使用标记将 X0 类型作为字符串:

Intent newActivity = new Intent(this, typeof(A2));
newActivity.PutExtra("endActivity", endActivityType);
StartActivity(newActivity);

一旦我想在我的活动 A3 中回到 X0 ,我就会这样做:

 Type typeX0 = Type.GetType("MyAppNamespace." + endActivityType);
 Intent intent = new Intent(this, typeX0);
 intent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
 StartActivity(intent);

Kashish说。