如何让我的 Android Spinner 正常工作

问题描述 投票:0回答:1

根据我在互联网上找到的内容,我创建了一个 SpinnerPopup 来显示长时间运行任务的微调器。旋转器就在那里并且最终会出现,但不是在我非常想要的时候。我真正想做的就是在方法启动时启动微调器,并在方法完成时结束它,但它还远远没有工作。这是我的旋转类;

<toolkit:Popup
x:Class="MauiFirstApp.SpinnerPopup"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:ViewModel="clr-namespace:MauiFirstApp.ViewModels"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
<VerticalStackLayout>
    <ActivityIndicator IsRunning="True" />
        <Label Text="Loading..." />
    </VerticalStackLayout>
</toolkit:Popup> 

这是背后的代码;

public partial class SpinnerPopup : Popup
{
    public SpinnerPopup()
    {
        InitializeComponent();
    }
}

这是我在方法调用之前打开它并在方法调用之后关闭它的代码,但它根本不起作用。当方法结束时它最终打开,然后立即关闭,所以什么也没有显示,除非我乱搞代码来显示。

else if (DeviceInfo.Platform.ToString() == Device.Android)
{
    popup = new SpinnerPopup();
    this.ShowPopup(popup);

    await UpdateCarsProperties(id, radio, toggled);         
    await ucvm.GetDisplayData("UpdateCars", cv, popup);

    await popup.CloseAsync();
    popup.Reset();

    Preferences.Set("Updated", true);

}

不太确定在这里要做什么,上面编码的旋转器 iOS 旋转器适用于 iOS,但不适用于 Android。任何帮助将不胜感激。

c# android maui spinner
1个回答
0
投票

如果您执行非常短的代码或需要很短时间的任务,

SpinnerPopup
会很快出现和消失,造成它从未出现的错觉。

但是,如果您执行一项耗时的任务,

SpinnerPopup
将会出现,并在任务结束时消失。

根据你的代码,我创建了一个demo,并尝试使用

await Task.Delay(3000);
来模拟一个耗时的任务,结果是
SpinnerPopup
在android平台上可以在3秒后出现并消失。

       var  popup = new SpinnerPopup();
        this.ShowPopup(popup);
        
       //add Task.Delay method here
        await Task.Delay(3000);

        await popup.CloseAsync();
        popup.Reset();
© www.soinside.com 2019 - 2024. All rights reserved.