2016-07-12 21 views
5

こんにちは皆さんGood Dayどのように文字列値やデータをAndroid MainActivityからPCL TabbedPageに渡しますか?Android MainActivityからPCLに文字列データを渡すTabbedPage xamarin.form

MainActivity.cs

using System; 
using Android.App; 
using Android.Content; 
using Android.Content.PM; 
using Android.Runtime; 
using Android.OS; 
using Android.Telephony; 
using Xamarin.Forms; 

    namespace NegDrClient.Droid 
    { 
    [Activity (Label = "Neg Client", Icon = "@drawable/logo", MainLauncher = true, ScreenOrientation = ScreenOrientation.Portrait)] 
    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); 
      global::ZXing.Net.Mobile.Forms.Android.Platform.Init(); 
      LoadApplication (new App()); 
     } 

     public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) 
     { 
      global::ZXing.Net.Mobile.Forms.Android.PermissionsHandler.OnRequestPermissionsResult (requestCode, permissions, grantResults);   
     } 

     public string GetNumber() 
     { 
      TelephonyManager telephonyManager = 
      (TelephonyManager) Forms.Context.GetSystemService(Android.Content.Context.TelecomService); 
      var number = telephonyManager.Line1Number; 
      return number.ToString(); 
     } 
    } 
    } 

私は、ログインエントリー、感謝に割り当てることができるようにはgetNumber()メソッドを呼び出す必要があります。

答えて

4

これは、依存関係サービスを介して行うことができます。

あなたXamarin.Formsプロジェクトに次のインターフェイスを追加します(あなたのnamespace NegDrClient.Droid以上)

public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity, IPhone 

登録その依存クラス:

public interface IPhone 
{ 
    string GetNumber(); 
} 

はあなたXamarin.Androidプロジェクト内の既存MainActivityにそのインタフェースを追加:

[assembly: Xamarin.Forms.Dependency(typeof(MainActivity))] 

今、あなたはあなたのXamarin.Formsプロジェクトでそれを呼び出すことができます。

var GetNumberButton = new Button() 
{ 
    Command = new Command(() => { 
     Device.BeginInvokeOnMainThread(() => 
     { 
      var number = DependencyService.Get<IPhone>().GetNumber(); 
      System.Diagnostics.Debug.WriteLine(number); 
     }); 
    }) 
}; 

注:あなたGetNumber方法に誤りがあったが、次のようになります。

public string GetNumber() 
{ 
    var telephonyManager = (TelephonyManager)Forms.Context.GetSystemService(Context.TelephonyService); 
    return telephonyManager.Line1Number; 
} 
関連する問題