Xamarin.Android从导航堆栈中删除以前的活动

Android标志在堆栈的正方形栈与圆形边缘。

在本周中,我们将研究我们如何从导航堆栈中删除活动。如果您正在实现扩展的启动屏幕,这可能非常有用,并且当用户选择后按钮时不想导航回它。

为此,我们将首先创建一个欢迎屏幕,该屏幕将导航到主要活动,在此过程中将删除欢迎屏幕即,导航堆栈的活动允许用户从主屏幕退出应用程序。

创建一个欢迎屏幕

对于欢迎屏幕,我们将创建一个正常的线性布局页面,所以这里没有什么特别的。要导航到主活动,我们创建了一个意图,并配置它以在新任务中创建目标活动:

var intent = new Intent(this, typeof(MainActivity));
intent.SetFlags(ActivityFlags.NewTask);
StartActivity(intent);

导航到我们称之为的主要活动后 结束 将终止的方法 欢迎 并从导航堆栈中删除它。

结束();

我们可以将代码放在创建的方法中:

[Activity(Label = "RemoveActivityFromNavigationstack", MainLauncher = true, Icon = "@drawable/icon")]
public class WelcomeActivity : Activity
{
    protected override async void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        SetContentView(Resource.Layout.Welcome);

        // Do some meaninthing stuff here, or just wait for 3 seconds...
        await Task.Delay(3000);

        var intent = new Intent(this, typeof(MainActivity));
        intent.SetFlags(ActivityFlags.NewTask);
        StartActivity(intent);
        Finish();
    }
}

请注意,如果未设置ActivityFlags.newtask,则目标活动也将停止运行,用户只会看到应用程序的空白屏幕。

结论

我们看到如何设置导航以从导航堆栈中删除活动。在从导航堆栈中删除扩展的飞溅屏幕等时,此方法非常使用允许用户从根屏幕关闭应用程序。

您可以找到整个样本 GitHub..

Updated: