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并选中。