2017-06-08 11 views
1

ネイティブのAndroidアクティビティからXamarinフォームページを起動できますが、Xamarin Forms ContentPageのネイティブAndroidアクティビティを開始するにはどうすればよいですか。私はDependencyServiceで試しましたが、成功しませんでした。XamarinフォームページからAndroidアクティビティを起動するにはどうすればよいですか?

+0

カスタムページレンダラー? – Milen

+0

この回答を見るhttps://stackoverflow.com/questions/28874892/xamarin-forms-start-an-activity-using-dependencyservice – AhmedW

+0

DependencyServiceインターフェイスを作成し、これをAndroidのアクティビティ内の関数に接続しました。しかし、私はその関数から別のアクティビティを開始することはできませんし、また、onCreateメソッドの外からcontentViewを設定することはできません。何が間違っているのですか?エラーがある:名「StartActivityは、」現在のコンテキスト –

答えて

2

私はそれを理解しました。

DependencyService.Register<IRecordVideoPage>(); 
DependencyService.Get<IRecordVideoPage>().StartNativeIntentOrActivity(); 

次:

まず私はXamarinフォームから、次のように依存関係サービスを使用してコンテンツページをネイティブAndroidの活動を開始しましたXamarinプロジェクト、その後

public interface IRecordVideoPage 
{ 
    void StartNativeIntentOrActivity(); 
} 

にこのようなインターフェイスを作成するために必要なテストアクティビティを読み込むAndroidプロジェクトにRecordActivityクラスを作成しました

[assembly: Xamarin.Forms.Dependency(typeof(RecordActivity))] 
namespace StreamTest.Droid 
{ 
    [Activity(Label = "RecordActivity")] 
    public class RecordActivity : IRecordVideoPage 
    { 
     public void StartNativeIntentOrActivity() 
     { 
      var intent = new Intent(Forms.Context, typeof(Test)); 
      Forms.Context.StartActivity(intent); 
     } 
    } 

最後に、テストクラスのコンテンツビューを設定しました。

public class Test : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 
    { 
     public Test() { } 

     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 
      SetContentView(Resource.Layout.Record); 
     } 
    } 
} 
+0

はい。これが方法です。私はあなたが必要としないと思う「DependencyService.Register ();」コードは、Xamarinはあなたのために仕事をします。 –

0

依存性サービスが最適です。 PCL(ポータブルクラスライブラリ)のコンセプトは、まさにプラットフォームに依存しないことです。 あなたが依存サービスで得ているエラーを表示すると助けになるかもしれません

関連する問題