我有一个包含多项活动的Xamarin Android应用程序:
我有3项活动 A1 , A2 , A3 将从活动 X0 中调用:
X0 - > A1 - > A2 - >的 A3
X0 可以是我的应用的任何其他活动,因此我无法访问它的类型。 在活动 A3 我有一个按钮需要完成 A1 , A2 和 A3 并返回 X0
我该怎么做?
由于
答案 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说。