あなたはあなたのAndroidプロジェクトであなたのMainActivity
でOnActivityResult
メソッドをオーバーライドすることができます。 Xamarin.Formsはアプリ全体(舞台裏で)のアクティビティを1つだけ使用します。だからちょうどこれを使ってください。
Xamarin.Formsが提供するmessagingcenterを使用して、ページ(またはPCL /フォームプロジェクトの別のクラス)に通知します。
ここでは例です:
あなたMainActicity(アンドロイドプロジェクト)でのあなたの方法:
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
// Send trough the messaging sender (maybe someone subscribes to it)
MessagingCenter.Send(
new ActivityResultMessage {RequestCode = requestCode, ResultCode = resultCode, Data = data}, ActivityResultMessage.Key);
}
その後メッセージングクラス:その後、
public class ActivityResultMessage
{
public static string Key = "arm";
public int RequestCode { get; set; }
public object ResultCode { get; set; }
public object Data { get; set; }
}
クラスに次のコードを使用します結果を処理する:
// Subscribe to the onactivityresult-message
MessagingCenter.Subscribe<ActivityResultMessage>(this, ActivityResultMessage.Key, (sender) =>
{
// do some magic =)
});
メッセージの背後にあることを理解するために、messagincenterに関する情報(上記のリンクを参照)をお読みください。 MainActivityで
活動は、破壊することができます。 OnCreateにも同じコードを追加して、バンドルの内容を確認する必要があります – Greensy
ありがとう@Joehl That worked! – user3165999
私の主なアクティビティでOnActivityResultをオーバーライドしようとすると、「オーバーライドする適切な方法がありません」と言われています。私はデフォルトのMainActivity "public class MainActivity:global :: Xamarin.Forms.Platform.Android.FormsAppCompatActivity"を使用しています。どのようにそれを修正するための任意のアイデア? – Dpedrinha