2017-08-08 14 views
0

私はXamarinが新しく、Android搭載デバイスのAndroidのアクティビティと、ログイン画面からiOSデバイスのiOSの画面を開きたいと考えています。私が書いたログイン画面のコードは、共有ポータブルコードエリアにあります。インタフェースと#if ANDROID #endifを使用しましたが、動作していません。これで私を助けてください。 Androidの画面は唯一のTextViewが含まれますとiOSの画面がImage.Thisが含まれていますポータブルフォルダにクロスプラットフォームの共有コードXamarinのログイン画面の後にプラットフォーム固有の画面を開く?

namespace DemoApp 

{ パブリッククラスホームページ私のログインページです:ContentPage { パブリックホームページ() {

 var title = new Label 
     { 
      Text = "Welcome to CloudCakes", 
      FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label)), 
      HorizontalOptions = LayoutOptions.CenterAndExpand, 
     }; 


     var email = new Entry 
     { 
      Placeholder = "E-Mail", 
     }; 

     var password = new Entry 
     { 
      Placeholder = "Password", 
      IsPassword = true 
     }; 

     var login = new Button 
     { 
      Text = "Login" 
     }; 

     // With the `PushModalAsync` method we navigate the user 
     // the the orders page and do not give them an option to 
     // navigate back to the Homepage by clicking the back button 
     login.Clicked += (sender, e) => 
    { 
     App.UserPreferences.Open(); 
     // await Navigation.PushModalAsync(new MainPage()); 
    }; 

     Content = new StackLayout 
     { 
      Padding = 30, 
      Spacing = 10, 
      Children = { title, email, password, login} 
     }; 
    } 
} 

} そして、これは私がログインボタン name space { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class Page1 : IUserPreferences { public Page1() { InitializeComponent(); } public void Open() { var title = new Label { Text = "Welcome to Xamarin Forms IOS Screen!!", FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label)), HorizontalOptions = LayoutOptions.CenterAndExpand, }; Content = new StackLayout { Padding = 30, Spacing = 10, Children = { title } }; } } }

0をクリックで移動したいドロイドフォルダ内のページです

オープンは、ポータブルフォルダーに存在するインターフェースの方法です。

答えて

0

私はあなたがXamarin.Formsを使用していると仮定していますので、実際には簡単に達成することができます。代わりに、次のコードで1つの新しいXAMLページを作成し、プラットフォームごとに個別のページを持つことの

MainPage.xamlを

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="YourApp.Views.MainPage"> 
    <ContentView> 
    <OnPlatform x:TypeArguments="View"> 
     <OnPlatform.iOS> 
     <Image Source="something.png" /> 
     </OnPlatform.iOS> 
     <OnPlatform.Android> 
     <Label Text="Android" /> 
     </OnPlatform.Android> 
    </OnPlatform> 
    </ContentView> 
</ContentPage> 

あなたは上で持っているものを制御することができますこの方法各プラットフォームのページ。

あなたLoginPageからメインページに移動するには、あなたが(MainPage.xaml.cs)の背後にあるコードにClickedイベントを実装する(またはできれCommandsを使用)する必要があり、そこにナビゲーションの操作を行います。では

private void SomeButton_Clicked(object sender, System.EventArgs e) 
{ 
    await this.Navigation.PushAsync(new MainPage()); 
} 

を長期的には、ViewModelのコマンドとコマンドの背後にあるこのコードの外側で、すべてこれを実行することを検討する必要があります。


編集:

1)サブクラスContentPageあなたのコアプロジェクトで:最初のソリューションは、あなたのために動作しませんでしたので、ここで何をするかです。

public class MainPage : ContentPage { } 

2)別個に各プラットフォームのPageRendererを実装します。前述のように、ページのネイティブレイアウト定義を使用することができます。

これを達成する方法については、Xamarinのブログにgreat articleがあります。 source code on GitHubもあります。

+0

どのフォルダに画像を追加するのですか?ログインボタンクリックからこのビューを呼び出すにはどうすればいいですか? – aman

+0

@aman私の回答を更新しました – hankide

+0

thanks mate。コードは正常に動作していますが、私はアンドロイド用のDroidフォルダに別のレイアウトファイルを、iOSレイアウト用にiOSで別のファイルを作成します。ポータブルフォルダのログインボタンをクリックすると、デバイスのプラットフォームに応じてそれぞれのファイルが開きます。 – aman

関連する問題