Xamarin - 背堆不清楚

时间:2015-07-10 13:23:16

标签: c# android xml android-activity xamarin

我有一个LoginActivity(这是主要的活动),在用户登录后,它将他重定向到另一个活动,当他按下后退按钮时,它会返回到登录活动。我试过用 这样:

StartActivity(typeof(FragmentRendererActivity));
Finish();

和此:

StartActivity(new Intent(this, typeof(FragmentRendererActivity)));
Finish();

和此:

Intent intent = new Intent(this, typeof(FragmentRendererActivity));
intent.AddFlags(ActivityFlags.NoHistory);
StartActivity(intent);

和此:

Intent intent = new Intent(this, typeof(FragmentRendererActivity));
intent.AddFlags(ActivityFlags.ClearTop);
intent.AddFlags(ActivityFlags.ClearTask);
intent.AddFlags(ActivityFlags.NewTask);
StartActivity(intent);
Finish();

和此:

<application android:label="Homecheck" android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar">
    <activity android:name="LoginActivity" android:noHistory="true" android:launchMode="singleTask" />
</application>

......但没有任何效果。我能够得到的最接近的是我登录,我转到活动B,按下后退按钮,应用程序退出(暂停状态)。我恢复了,你猜对了,我回到了登录活动。 那么有没有办法正确摆脱后台堆栈中的活动? 附:也许问题是我的LoginActivity是主要的活动?

1 个答案:

答案 0 :(得分:2)

如果Login是您的MainActivity,每次应用关闭并打开时,它都将是用户看到的第一个屏幕。使用启动画面可以检查您的用户是否已经过身份验证,并从那里重定向。你谈到的行为是预期的行为

在类的ontop属性中添加NoHistory = true会将其从后栈中删除

 [Activity(Label = "SampleApp", NoHistory = true)]
public class LoginActivty : Activity
{
}

您还可以尝试清除热门活动

        var intent = new Intent(this, typeof(SampleActivity));
        intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.ClearTask | ActivityFlags.NewTask);

        StartActivity(intent);

        Finish();