【问题标题】:Passing string/method form MainPage to MainActivity Xamarin将字符串/方法表单 MainPage 传递给 MainActivity Xamarin
【发布时间】:2016-11-28 15:30:30
【问题描述】:

我想在我的 MainActivity 中使用 MainPage 中的变量或方法。我已经为我的 DependencyService 创建了一个接口,但我总是在

处遇到同样的错误
 DependencyService.Get<IHPost>.HPost("R");

方法在给定上下文中无效

我按照官方文档,所以我在PCL中创建了我的界面:

IHPost(公共接口)

在 Xamarin.Android 中,我编写了实现 HPost_droid [组装:依赖(typeof(HPost_droid))]行

在 MainActivity 我添加了这个接口。

代码:

IHPost.cs(接口)

    namespace Xam
{
    public interface IHPost
    {
        void HPost(string val);
    }
}

MainPage.xaml.cs

 public partial class MainPage : ContentPage
        {
            public MainPage()
            {
                InitializeComponent();
               // DependencyService.Get<IHPost>.HPost("R");
            }
        }

HPost_droid(类)

[assembly: Dependency(typeof(HPost_droid))]
namespace Xam.Droid
{
    class HPost_droid : Java.Lang.Object, IHPost
    {
        public HPost_droid() { }

        public void HPost(string val)
        {
            System.Diagnostics.Debug.Write(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" + val);
        }
    }
}

主活动

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

namespace Xam.Droid
{
    [Activity(Label = "Xam", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : Xamarin.Forms.Platform.Android.FormsAppCompatActivity, IHPost
    {
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            DependencyService.Get<IHPost>.HPost("R");

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

【问题讨论】:

  • 发布更多代码,发布您的 DependencyService 类,它的实现位置和接口。一年前我开始使用 Xamarin 并遇到了这个问题,希望能帮助您详细说明您的问题。如果你在做依赖注入,为什么不使用 MvvmLight 或 MvvmCross(或其他 mvvm 框架/Ioc 容器)?它们旨在让您摆脱这项工作。
  • 首先,您不能在调用 Xamarin.Forms.Forms.Init(this, bundle); 之前使用 Xamarin Forms 类,例如 DependencyService(因为 Init 获取所有可用的 Xamarin Forms 类)。此外,如果您已经在您的MainActivity 中,为什么不直接运行以下命令:new HPost_droid().HPost("R");?当您已经在本机项目中时,您不需要DependencyService。也许告诉我们你想用HPost()完成什么@
  • 我想将一些数据从 MainPage 传递到 MainActivity ,用于每个平台,例如条目字段或其他类似内容或某些事件。

标签: c# xaml xamarin


【解决方案1】:

我按照这个完美的教程从头开始重试应用程序:https://wolfprogrammer.com/2016/08/05/dependency-services-with-xamarin-forms/ 它的工作!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2013-03-31
    相关资源
    最近更新 更多