OnActivityResult Android未被触发

时间:2017-12-13 14:22:50

标签: android android-intent android-activity xamarin.android onactivityresult

我遇到了Xamarin.Android的问题,当我扫描包含某些产品信息的QRCode并启动活动(StartActivityForResult)进行借用并完成其他活动时,它不会触发{{1 }}

当我开始活动时:

OnActivityResult

onResult

    scannerButton.Click += async delegate
{
    MobileBarcodeScanner.Initialize(Application);

    var scanner = new MobileBarcodeScanner();

    var qrValue = await scanner.Scan();

    if (qrValue != null)
    {
        string[] infosProduct = qrValue.Text.Split(',');

        ProgressDialog progress = new ProgressDialog(this);
        progress.SetMessage("En cour...");
        progress.SetTitle("Vérification du statut de l'objet");
        progress.SetProgressStyle(ProgressDialogStyle.Spinner);
        progress.SetCancelable(false);
        progress.Show();

        bool? borrowed = DbManager.getInstance().isProductBorrowed(Convert.ToInt32(infosProduct[0]));

        progress.Dismiss();

        if (borrowed == true) 
        {                     
            Toast.MakeText(this, "todo : rendre produit", ToastLength.Long).Show();
        }
        else if (borrowed == false)
        {
            Intent intent = new Intent(this, typeof(BorrowActivity));
            intent.PutExtra("user", settings.GetString("user", ""));
            intent.PutExtra("infosProduct", infosProduct);
            StartActivityForResult(intent,0);
        }
    }
};

当我发送结果时:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);
        if (resultCode == Result.Ok)
        {
            // TODO Refresh
            Toast.MakeText(this, "test", ToastLength.Long).Show();
        }
    }

2 个答案:

答案 0 :(得分:0)

尝试更改活动:

  

Intent intent = new Intent(this,typeof(BorrowActivity));

  

意图意图=新意图(这,   。typeof运算(BorrowActivity))SetFlags(ActivityFlags.ReorderToFront);

如果它没有帮助我不知道。我有类似的问题。 在我的情况下,xamarin或visual studio的最新更新可能会导致问题,因为在三台计算机中的一台计算机中,相同的代码工作正常并且压缩程序仍未更新。

答案 1 :(得分:0)

问题解决了,问题是我的Activiy所在的“OnActivityResult”没有参数“MainLauncher = true”,或者它只是通过重新创建项目来解决。我也使用了@Justinas的答案,但只有当我重新创建项目并使用param时它才有效。所以我真的不知道它的工作原因,但它的工作原理是: