2016-11-28 14 views
0

私はMainActivityで私のMainPageからVariabeleまたはメソッドを使いたいと思います。私は私のDependencyServiceためのインタフェースを作成しましたが、私はいつも同じエラーがMainActivityにMainPageを渡す文字列/メソッドフォームXamarin

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

指定されたコンテキストでは有効ではないメソッドは、私は公式ドキュメントを踏襲しているので、私はPCLでの私のインターフェイスを作成しました依存関係(TY:私は [アセンブリに実装HPost_droidを書かれているXamarin.Androidで

IHPost(パブリックインターフェイス)

peof(HPost_droid))] line

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); 
     } 
    } 
} 

MainActivity

[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()); 
     } 
    } 
} 
+0

あなたのDependencyServiceクラスを実装し、実装しているコードをいくつか追加して投稿してください。私は1年前にXamarinを始めて、この問題に直面しています。あなたの質問を手助けしたいと思っています。そして、あなたが依存性注入をしているのであれば、MvvmLightやMvvmCross(あるいは別のmvvmフレームワーク/ Iocコンテナ)を使わないのはなぜですか?彼らはあなたの手からこの作品を取るように設計されています。 – SilentStorm

+0

まず、Xamarin.Forms.Forms.Init(this、bundle);を呼び出す前に 'DependencyService'などのXamarin Formsクラスを使用することはできません(' Init'はすべてのXamarinフォームクラスを利用できるため)。また、あなたが 'MainActivity'に既に入っているならば、単に次のコマンドを実行するだけではどうでしょうか?' new HPost_droid()。HPost( "R"); '?すでにネイティブプロジェクトに入っているときに 'DependencyService'は必要ありません。たぶんあなたが 'HPost()'で達成しようとしていることを教えてください – hvaughan3

+0

エントリのフィールドやこのようなイベントやいくつかのイベントのように、各プラットフォームのMainActivityにMainPageからのデータを渡したいとします。 – Sarcel

答えて

関連する問題