从Fragment启动时,Activity会多次启动

时间:2015-09-03 08:50:42

标签: android android-activity fragment

我有一个片段,当单击一个按钮时会启动一个新活动。活动在横向模式下打开。现在,活动已多次启动。如果我从另一个活动开始活动,行为很好并且工作正常。只有从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);

        }

2 个答案:

答案 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);