私は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());
}
}
}
あなたのDependencyServiceクラスを実装し、実装しているコードをいくつか追加して投稿してください。私は1年前にXamarinを始めて、この問題に直面しています。あなたの質問を手助けしたいと思っています。そして、あなたが依存性注入をしているのであれば、MvvmLightやMvvmCross(あるいは別のmvvmフレームワーク/ Iocコンテナ)を使わないのはなぜですか?彼らはあなたの手からこの作品を取るように設計されています。 – SilentStorm
まず、Xamarin.Forms.Forms.Init(this、bundle);を呼び出す前に 'DependencyService'などのXamarin Formsクラスを使用することはできません(' Init'はすべてのXamarinフォームクラスを利用できるため)。また、あなたが 'MainActivity'に既に入っているならば、単に次のコマンドを実行するだけではどうでしょうか?' new HPost_droid()。HPost( "R"); '?すでにネイティブプロジェクトに入っているときに 'DependencyService'は必要ありません。たぶんあなたが 'HPost()'で達成しようとしていることを教えてください – hvaughan3
エントリのフィールドやこのようなイベントやいくつかのイベントのように、各プラットフォームのMainActivityにMainPageからのデータを渡したいとします。 – Sarcel