2014-10-10 3 views
5

저는 xamarin 형식을 사용하여 새 모바일 응용 프로그램을 만듭니다. 두 페이지 로긴 화면과 홈 화면을 만들어야합니다. 나는 샘플을 얻는다 HereXamarin.form setpage가 두 번째로 작동하지 않습니다.

그러나 내가 같은 것을 만들 때 두 번째 페이지로 갈 수 없다. 항상 로그인 페이지 만 유지합니다. 내 안드로이드 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 방법에

하지 대체했다. 어느 누구도 도와주세요

+0

Xamarin.Forms 프레임 워크는 당신을 위해 탐색을 처리합니다. 탐색 스택을 관리하고 Android Project에서 SetPage를 사용하지 않으려면 Xamarin.Forms.Navigation 클래스를 사용해야합니다. –

답변

0

다음은 Android에서 두 번째로 설정된 페이지 문제에 대한 해결 방법입니다. 두 번째 인터페이스를 만들고 기존 활동에서 set page를 사용하는 대신 새 활동의 OnCreate가 set 페이지를 호출하고 현재 활동을 완료하는 새 활동을 시작하십시오. 아이폰 OS 당신에

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

안드로이드 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(); 
    } 

안드로이드 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(); 
    } 

을 App Delegate에서 사용할 모든 필요한 인터페이스를 구현하는 것만으로 특별한 것을 할 필요가 없습니다.

아이폰 OS 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(); 
    } 
관련 문제