2014-10-10 15 views
5

xamarin formu kullanarak yeni bir mobil uygulama oluşturuyorum. İki sayfa giriş ekranı ve ana ekran oluşturmalıyım. HereXamarin.form setpage ikinci kez çalışmadı

Örneklerini aldığımda, aynı sayfayı oluşturduğumda ikinci sayfaya gidemiyorum. her zaman sadece giriş sayfası kalır. Benim android MainActivity kodu ikinci kez ama sayfa içeriği denilen

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 yöntemi olarak

değil değiştirilir. Lütfen herhangi bir

+0

Xamarin.Forms çerçevesi sizin için Navigasyon işler. Gezinme Yığını'nı yönetmek için Xamarin.Forms.Navigation sınıfını kullanmalı ve Android Projesinde SetPage'i kullanmaktan kaçınmalısınız. –

cevap

0

Yardımı için yardım edin. İkinci bir arayüz oluşturun ve mevcut etkinlikteki set sayfasını kullanmak yerine, yeni etkinliğin OnCreate öğesi ayarlanmış sayfası ve mevcut aktiviteyi bitirin. iOS sen de

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(); 
    } 

Özel bir şey yapmanıza gerek yoktur, sadece uygulama delegesinde kullanacağınız tüm gerekli arabirimleri uygulayın.

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(); 
    }