如何从Android MainActivity.cs文件更改Xamarin.forms中页面标签的文本?

问题描述 投票:0回答:2

我正在使用Xamarin.forms,正在尝试在当前页面的标签上显示(正在运行它的Android手机的)电话号码。问题是我无法从Android的MainActivity进行更改,也无法通过相应的page.xaml.cs代码获取电话号码。

有人知道这样做的方法吗? (我认为这很简单,但是我很菜鸟)

这是Android MainActivity.cs文件的代码(电话号码保存在“ myPhoneNumber”中:]

using System;

using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Locations;
using Android.Telephony;
using Android.Content;
using Xamarin.Forms;

namespace SOSChile.Droid
{
    [Activity(Label = "SOSChile", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        string myPhoneNumber = "Hola";

        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
            LoadApplication(new App());


            TelephonyManager tMgrStart = (TelephonyManager)this.GetSystemService(TelephonyService);
            string myPhoneNumber = tMgrStart.Line1Number;
        }
    }
}

这是page.xaml.cs文件(我没有修改它,但是可能有助于了解情况:P):

using System;

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

using Xamarin.Forms;
using Xamarin.Forms.Xaml;

namespace SOSChile
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class AndroidPage : ContentPage
    {
        public AndroidPage ()
        {
            InitializeComponent ();
        }
    }
}
c# android xaml xamarin.forms label
2个回答
0
投票

好吧,唯一的方法似乎是DependencyService(至少,这是我发现的唯一方法)。 youtube中有足够的教程,并不难,但是我的主要麻烦是我不知道我应该使用“ Android.App.Application.Context”而不是“ this”作为上下文]


0
投票

一种简单的方法是使用Messaging Center

例如,在表单中订阅消息:

public MainPage()
    {
        InitializeComponent();

        MessagingCenter.Subscribe<object, object>(this, "PassData", (sender, args) =>
        {
             DisplayAlert("Message received", "arg=" + args, "OK");
        });
    }

并在特定平台上发送消息:

string myPhoneNumber = "test";
MessagingCenter.Send<object, object>(this, "PassData", myPhoneNumber);
© www.soinside.com 2019 - 2024. All rights reserved.