我有一个片段,当单击一个按钮时会启动一个新活动。活动在横向模式下打开。现在,活动已多次启动。如果我从另一个活动开始活动,行为很好并且工作正常。只有从Fragment
启动时才会发生多个活动呈现知道如何阻止这种行为吗?
以下是代码: -
void teaserVideo_Touch(object sender, View.TouchEventArgs e)
{
Intent mIntent = new Intent();
mIntent.AddFlags(ActivityFlags.ReorderToFront);
mIntent.AddFlags(ActivityFlags.NewTask);
mIntent.SetClass(this.Activity, typeof(VideoActivity));
Activity.StartActivity(mIntent);
}
答案 0 :(得分:0)
查看方法名称,"触摸"意味着当手指触摸视频时,它被多次调用。
您可以将其设置为仅识别真正的"点击",或者只是使用以下标志捕获第一个事件:
boolean intentLaunched = false;
void teaserVideo_Touch(object sender, View.TouchEventArgs e)
{
if(!intentLaunched){
intentLaunched = true;
Intent mIntent = new Intent();
mIntent.AddFlags(ActivityFlags.ReorderToFront);
mIntent.AddFlags(ActivityFlags.NewTask);
mIntent.SetClass(this.Activity, typeof(VideoActivity));
Activity.StartActivity(mIntent);
}
}
请务必重置" intentLaunched"在onResume()或其他东西
中返回false答案 1 :(得分:0)
无论您是从Activity还是Fragment调用,Activity都必须启动一次。 问题在于代码:
mIntent.AddFlags(ActivityFlags.ReorderToFront);
这里ActivityFlags.ReorderToFront
会将已创建的活动从android堆栈调用到前面。
mIntent.AddFlags(ActivityFlags.NewTask);
此处ActivityFlags.NewTask
再次在您的Android堆栈中启动一个新活动。
因此,您将最终调用多个Activity实例。
只需将您的代码更改为:
Intent mIntent = new Intent();
mIntent.AddFlags(ActivityFlags.ReorderToFront);
mIntent.SetClass(this.Activity, typeof(VideoActivity));
Activity.StartActivity(mIntent);