繁体   English   中英

Xamarin.form setpage第二次没有工作

[英]Xamarin.form setpage not worked second time

我使用xamarin表单创建新的移动应用程序。 我必须创建两个页面登录屏幕和主屏幕。 我从这里得到样品

但是,当我创建相同的我不能去第二页。 它始终只保留登录页面。

在我的Android MainActivity代码中

   public class MainActivity : AndroidActivity, LoginManager
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        Xamarin.Forms.Forms.Init(this, bundle);

        SetPage(App.GetLoginPage(this));
      // SetPage(App.GetLoginPage(this));


    }
    #region ILoginManager implementation
    public void ShowMainPage()
    {
        SetPage(App.GetHomePage(this));
    }

    public void Logout()
    {
        SetPage(App.GetLoginPage(this));
    }
    #endregion
}

第二次调用setPage方法但页面内容未被替换。 请帮助任何人

这是针对Android的第二个设置页面问题的解决方法。 创建第二个界面,而不是在现有活动上使用设置页面,启动新活动,其中新活动的OnCreate调用设置页面并完成当前活动。

App.cs

    public static ILoginManager LoginManager;
    public static IAppNavigation SplashManger;      


    public static Page GetLoginPage(ILoginManager lmanager)
    {
        LoginManager = lmanager;          
        return new Page_Login();
    }

    public static Page GetShowSplashPage(IAppNavigation iSplashNavigation)
    {
        SplashManger = iSplashNavigation;
        return new Page_Splash();
    }

Android MainActivty

[Activity(Label = "", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize |   ConfigChanges.Orientation)]
public class MainActivity : AndroidActivity, IAppNavigation
{
    protected override void OnCreate(Bundle bundle)
    {
        //Window.RequestFeature(WindowFeatures.NoTitle);
        base.OnCreate(bundle);

        Xamarin.Forms.Forms.Init(this, bundle);
        SetPage(App.GetShowSplashPage(this));
    }



    public void GetLoginPage()
    {
        StartActivity(new Intent(this, typeof(LoginActivity)));
        Finish();
    }

Android LoginActivity

[Activity(Label = "", ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class LoginActivity : AndroidActivity, ILoginManager
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        Xamarin.Forms.Forms.Init(this, bundle);
        SetPage(App.GetLoginPage(this));
    }



    public void GetMainMenu()
    {
        StartActivity(new Intent(this, typeof(MainMenuActivity)));
        Finish();
    }

在iOS中,您不需要执行任何特殊操作,只需实现您将在App委托中使用的所有必要接口。

iOS AppDelegate

[Register("AppDelegate")]
public partial class AppDelegate : UIApplicationDelegate, ILoginManager, IAppNavigation
{
    // class-level declarations
    UIWindow window;


    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        Forms.Init();

        window = new UIWindow(UIScreen.MainScreen.Bounds);

        window.RootViewController = App.GetShowSplashPage(this).CreateViewController();

        window.MakeKeyAndVisible();

        return true;
    }

    public void GetMainMenu()
    {
        window.RootViewController = App.GetMainMenu().CreateViewController();
        window.MakeKeyAndVisible();
    }

    public void GetLoginPage()
    {
        window.RootViewController = App.GetLoginPage(this).CreateViewController();
        window.MakeKeyAndVisible();
    }

暂无
暂无

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

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