首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android全局不支持PushAsync,请使用NavigationPage - Xamarin.Forms

Android全局不支持PushAsync,请使用NavigationPage - Xamarin.Forms
EN

Stack Overflow用户
提问于 2014-07-08 08:04:44
回答 10查看 85.8K关注 0票数 85

我在连接到按钮单击事件的Xamarin.Forms.ContentPage中使用了以下方法

代码语言:javascript
复制
public class LoginPage : ContentPage
{
    private Button _loginButton = null;
    private Entry _PasswordInput = null;
    private Entry _UsernameInput = null;

    public LoginPage()
    {
        _UsernameInput = new Entry { Placeholder = "Username" };
        _PasswordInput = new Entry { Placeholder = "Password", IsPassword = true };

        _loginButton = new Button
        {
            Text = "Login",
            BorderRadius = 5
        }

        _loginButton.Clicked += LogIn;

        Content = new StackLayout 
        {
            VerticalOptions = LayoutOptions.Center,
            Children = 
            {
                 _UsernameInput, _PasswordInput, _loginButton, 
            },
            Spacing = 15
        };
    }

    public async void LogIn(object sender, EventArgs eventsArgs)
    {
        //do authenticate stuff here
        SSO.MyAuthentication client = new SSO.MyAuthentication();

        bool isAuthenticated = client.Authenticate(_UsernameInput.Text, _PasswordInput.Text);

        if(isAuthenticated)
        {
             //Push home page to top of navigation stack
             Navigation.PushAsync(new HomePage());
        }
    }
}

在下面的代码行Navigation.PushAsync(new HomePage());中,我在调试时得到了以下异常:

安卓系统全局不支持

PushAsync,请使用NavigationPage

如何使用Xamarin.Forms.NavigationPage对象解决此问题?

EN

回答 10

Stack Overflow用户

发布于 2016-05-16 06:26:24

您正在调用"PushAsync"

代码语言:javascript
复制
public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private void btnCourseList_Clicked(object sender, EventArgs e)
    {
        Navigation.PushAsync(new PageB());
    }
}

但是您没有启动NavigationPage,这通常在App.cs类中完成,或者至少应该在调用"PushAsync"之前启动它

代码语言:javascript
复制
MainPage = new NavigationPage(new PageA());
票数 145
EN

Stack Overflow用户

发布于 2017-10-25 07:34:19

在app.xaml.cs文件中,

替换

代码语言:javascript
复制
 MainPage = new <namespace>.MainPage();

使用

代码语言:javascript
复制
 MainPage = new NavigationPage(new <namespace>.MainPage());

然后使用

代码语言:javascript
复制
 await Navigation.PushAsync(new NavigationPage(new MainPage2()));
票数 56
EN

Stack Overflow用户

发布于 2014-07-08 08:13:22

您需要将您的LoginPage封装在NavigationPage中。这将修复您的错误,但会为您留下导航堆栈中包含的LoginPage。

另一种方法是将HomePage作为应用程序的根,然后在其上以模态方式显示LoginPage。只有当用户成功登录时,您才会关闭LoginPage模式,以便他们可以看到HomePage。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24621814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档