2016-07-12 78 views
5

Ciao a tutti Buongiorno come faccio a passare il valore di stringa oi dati da Android MainActivity a PCL TabbedPage?passaggio di dati stringa da Android MainActivity a 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(); 
     } 
    } 
    } 

ho bisogno di chiamare il metodo ControllaNumero() in modo da poter assegnare alla mia voce di accesso, grazie.

risposta

4

È possibile farlo tramite un servizio di dipendenza.

Aggiungere la seguente interfaccia al progetto Xamarin.Forms:

public interface IPhone 
{ 
    string GetNumber(); 
} 

Aggiungi che si interfacciano alla tua esistente MainActivity all'interno del progetto Xamarin.Android:

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

Registrati quella classe Dipendenza (sopra la namespace NegDrClient.Droid) :

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

Ora si può chiamare nel progetto Xamarin.Forms:

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

Nota: Il tuo metodo GetNumber ha un errore in esso, dovrebbe essere:

public string GetNumber() 
{ 
    var telephonyManager = (TelephonyManager)Forms.Context.GetSystemService(Context.TelephonyService); 
    return telephonyManager.Line1Number; 
}