2016-07-12 9 views
5

Witam wszystkich Dzień dobry jak przekazać ciąg wartości lub danych z Android MainActivity do PCL TabbedPage?przekazywanie danych ciągów z Android MainActivity do 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(); 
     } 
    } 
    } 

muszę wywołać metodę GetNumber(), aby można było przypisać go do mojego wpisu logowania, dzięki.

Odpowiedz

4

Możesz to zrobić za pomocą usługi zależności.

Dodaj następujący interfejs do projektu Xamarin.Forms:

public interface IPhone 
{ 
    string GetNumber(); 
} 

Dodaj tego interfejsu do istniejącego MainActivity ramach projektu Xamarin.Android:

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

Rejestracja tej klasy (Dependency powyżej twój namespace NegDrClient.Droid) :

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

Teraz można nazwać w projekcie Xamarin.Forms:

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

Uwaga: Twoja metoda GetNumber zawiera błąd w nim, powinno być:

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