2017-07-21 27 views
0

Androidレイアウトthis.SetContentView(Resource.Layout.Main)とLoadApplication(新しいApp())を使用した後、Xamarin.Forms MainPage.xamlが表示されませんでした。私は線形レイアウトを削除しようとしましたが、フォーム自体ではなく、その内部の項目を削除するだけでした。 SetContentViewがXamarin.Formsをブロックしているようです。Xamarin.FormsのコンテンツがActicity.SetContentViewの使用後に表示されない

using Android.App; 
using Android.Content; 
using Android.Content.PM; 
using Android.OS; 
using Android.Text.Method; 
using Android.Widget; 
using Auth0.OidcClient; 
using IdentityModel.OidcClient; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Xamarin.Forms; 

namespace IndoFellowship.Droid { 
    // Define App icon and name 
    [Activity(
     Label = "Indo App", 
     MainLauncher = true, 
     Icon = "@drawable/icon", 
     LaunchMode = LaunchMode.SingleTask) 
    ] 
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity { 

     protected override void OnCreate(Bundle bundle) { 
      base.OnCreate(bundle); 
      global::Xamarin.Forms.Forms.Init(this, bundle); 

      // Showing layout that I set 
      SetContentView(Resource.Layout.Main); 

      // Do login 
      // Some codes 

      // Done processing on Android, I need to load Xamarin.Forms 
      LinearLayout mainLayout = (LinearLayout)FindViewById(Resource.Id.mainLayoutID); 
      mainLayout.RemoveAllViews(); 

      // Load App 
      LoadApplication(new App()); 
     } 
    } 
} 

Main.axmlリソース/値/

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainLayoutID" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    // Some layout here.. 

</LinearLayout> 

と私のApp.xaml.cs(Xamarin)上:だから、ここで

MainActivity.csです

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Xamarin.Forms; 

namespace IndoFellowship { 
    public partial class App : Application { 
     public static string AppName { get; set; } 

     public App() { 
      InitializeComponent(); 

      MainPage = new NavigationPage(new MainPage()); 
     } 

     protected override void OnStart() { 
      // Handle when your app starts 
     } 

     protected override void OnSleep() { 
      // Handle when your app sleeps 
     } 

     protected override void OnResume() { 
      // Handle when your app resumes 
     } 
    } 
} 

MainPage.xaml.cs(Xamarin)ここではオーバー

using Auth0.OidcClient; 
using IdentityModel.OidcClient; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Xamarin.Auth; 
using Xamarin.Forms; 

namespace IndoFellowship 
{ 
    public partial class MainPage : ContentPage { 
     public MainPage() 
     { 
      InitializeComponent(); 
      var browser = new WebView(); 

      browser.Source = "http://xamarin.com"; 

      Content = browser; 
     } 
    } 
} 

私はxamarin.comのWebViewのを見て必要がありますが、私のAndroidのはただ真っ白になりました。 Xamarin.Formsはまったく表示されていないようです。私はまだXamarin.Androidにいます。私がSetContentViewを取った場合、完全にレンダリングされたフォームを見ることができますが、Androidで必要な処理はできません。

  • XAMARINフォームをMainActivityから正しくロードするために必要なことはありますか?
  • レイアウトが削除されないのはなぜですか?

ありがとうございます。

答えて

0

LoadApplicationの代わりにStartActivityを使用して私の解決策を見出しました。二アクティビティ作成することで

XamarinForms.csこの活動の負荷アプリ()ここでは代わりにLoadApplicationの

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 

namespace IndoFellowship.Droid { 
    [Activity(Label = "XamarinForm")] 
    public class XamarinForm : Xamarin.Forms.Platform.Android.FormsApplicationActivity { 
     protected override void OnCreate(Bundle bundle) { 
      base.OnCreate(bundle); 

      Xamarin.Forms.Forms.Init(this, bundle); 
      LoadApplication(new App()); 
     } 
    } 
} 

MainActivity.csは、私の代わりに第二の活動を呼び出しています

using Android.App; 
using Android.Content; 
using Android.Content.PM; 
using Android.OS; 
using Android.Text.Method; 
using Android.Widget; 
using Auth0.OidcClient; 
using IdentityModel.OidcClient; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Xamarin.Forms; 

namespace IndoFellowship.Droid { 
    // Define App icon and name 
    [Activity(
     Label = "Indo App", 
     MainLauncher = true, 
     Icon = "@drawable/icon", 
     LaunchMode = LaunchMode.SingleTask) 
    ] 
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity { 

     protected override void OnCreate(Bundle bundle) { 
      base.OnCreate(bundle); 
      global::Xamarin.Forms.Forms.Init(this, bundle); 

      // Showing layout that I set 
      SetContentView(Resource.Layout.Main); 

      // Do login 
      // Some codes 

      // Done processing on Android, I need to load Xamarin.Forms 
      LinearLayout mainLayout = (LinearLayout)FindViewById(Resource.Id.mainLayoutID); 
      mainLayout.RemoveAllViews(); 

      // Load App 
      StartActivity(typeof(XamarinForms)); 
     } 
    } 
} 

これはいいデザインではありませんw私には2つの活動があります。あなたがこれを達成するためのよりよい方法を知っていれば教えてください。ありがとうございました。

関連する問題