Android 从片段启动时,活动会启动多次
我有一个片段,当点击一个按钮时,它会启动一个新的活动。该活动以横向模式打开。现在,该活动已启动多次。如果我从另一个活动开始活动,则行为良好,工作正常。多活动呈现仅在从片段启动时发生 你知道我怎样才能阻止这种行为吗 代码如下:-Android 从片段启动时,活动会启动多次,android,android-activity,fragment,Android,Android Activity,Fragment,我有一个片段,当点击一个按钮时,它会启动一个新的活动。该活动以横向模式打开。现在,该活动已启动多次。如果我从另一个活动开始活动,则行为良好,工作正常。多活动呈现仅在从片段启动时发生 你知道我怎样才能阻止这种行为吗 代码如下:- void teaserVideo_Touch(object sender, View.TouchEventArgs e) { Intent mIntent = new Intent(); mIntent.Ad
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);
}
查看方法名称,touch意味着当手指触摸视频时,它会被多次调用 您可以将其设置为仅识别真正的单击,或者简单地使用如下标志捕获第一个事件:
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);
}
}
请确保在onResume或其他内容中将intentLaunched重置为false,无论您是从活动还是片段调用,活动都必须启动一次。 问题在于代码:
mIntent.AddFlags(ActivityFlags.ReorderToFront);
这里ActivityFlags.ReorderToFront将从android堆栈调用已经创建的活动
mIntent.AddFlags(ActivityFlags.NewTask);
这里是ActivityFlags.NewTask,再次在android堆栈中启动一个新的活动。
因此,您将最终调用多个活动实例。
只需将代码更改为以下内容:
Intent mIntent = new Intent();
mIntent.AddFlags(ActivityFlags.ReorderToFront);
mIntent.SetClass(this.Activity, typeof(VideoActivity));
Activity.StartActivity(mIntent);
启动此活动的代码在哪里?我是说在你的碎片里。该代码中的某个地方有一个bug,否则将无法多次启动该活动。请共享一些代码。@kha已添加一些代码。请喝一杯look@SagarZala添加了一些代码。请看一看,我最初尝试过这种方法,它给了我同样的效果result@hello世界:单独使用ActivityFlags.ReorderToFront并选中。