繁体   English   中英

Xamarin-后堆栈不清除

[英]Xamarin - Back stack does not clear

我有一个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,按返回按钮,应用程序退出(暂停状态)。 我将其恢复,并且您猜到了,我又回到了登录活动。 那么,有没有一种方法可以适当地消除后台堆栈中的活动? PS也许问题是我的LoginActivity是主要活动?

如果Login是您的MainActivity,则每次关闭和打开应用程序时,它将是用户看到的第一个屏幕。 使用初始屏幕可以检查您的用户是否已通过身份验证,然后从那里重定向他们。 您谈论的行为是预期的行为

在类顶部的属性中添加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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM