Activity 从片段启动时启动多次
Activity starts multiple times when started from a Fragment
我有一个片段,当按钮 clicked.The activity 在横向模式下打开时,它会启动一个新的 activity。现在,activity 被多次启动。如果我从另一个 activity 启动 activity,则行为正常并且工作正常。多重 activity 渲染仅在从 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);
}
看方法名,"touch"表示当手指触摸视频时会调用多次。
您可以将其设置为仅识别真值 "click",或者简单地使用如下标志捕获第一个事件:
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
无论您是从 Activity 调用还是从 Fragment 调用,Activity 都必须启动一次。
问题出在代码中:
mIntent.AddFlags(ActivityFlags.ReorderToFront);
此处 ActivityFlags.ReorderToFront
将从 android 堆栈调用已创建的 activity 到前面。
mIntent.AddFlags(ActivityFlags.NewTask);
这里 ActivityFlags.NewTask
新的 activity 将在您的 android 堆栈中开始。
因此,您将最终调用 Activity 的多个实例。
只需将您的代码更改为以下内容:
Intent mIntent = new Intent();
mIntent.AddFlags(ActivityFlags.ReorderToFront);
mIntent.SetClass(this.Activity, typeof(VideoActivity));
Activity.StartActivity(mIntent);
我有一个片段,当按钮 clicked.The activity 在横向模式下打开时,它会启动一个新的 activity。现在,activity 被多次启动。如果我从另一个 activity 启动 activity,则行为正常并且工作正常。多重 activity 渲染仅在从 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);
}
看方法名,"touch"表示当手指触摸视频时会调用多次。
您可以将其设置为仅识别真值 "click",或者简单地使用如下标志捕获第一个事件:
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
无论您是从 Activity 调用还是从 Fragment 调用,Activity 都必须启动一次。 问题出在代码中:
mIntent.AddFlags(ActivityFlags.ReorderToFront);
此处 ActivityFlags.ReorderToFront
将从 android 堆栈调用已创建的 activity 到前面。
mIntent.AddFlags(ActivityFlags.NewTask);
这里 ActivityFlags.NewTask
新的 activity 将在您的 android 堆栈中开始。
因此,您将最终调用 Activity 的多个实例。
只需将您的代码更改为以下内容:
Intent mIntent = new Intent();
mIntent.AddFlags(ActivityFlags.ReorderToFront);
mIntent.SetClass(this.Activity, typeof(VideoActivity));
Activity.StartActivity(mIntent);