Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
完成活动在Android中未关闭(Xamarin)_Android_Android Activity_Xamarin.android_Activity Finish_Onbackpressed - Fatal编程技术网

完成活动在Android中未关闭(Xamarin)

完成活动在Android中未关闭(Xamarin),android,android-activity,xamarin.android,activity-finish,onbackpressed,Android,Android Activity,Xamarin.android,Activity Finish,Onbackpressed,我有两个活动一个是InventoryActivity,第二个是StoneDetailActivity。在我的InventoryActivity中,在RecycleView中使用RecycleView按钮单击我使用下面的StartActivityForResult代码启动StoneDetail活动 Intent stonedetailIntent = new Intent(context, typeof(StoneDetailActivity)); stonedetailIntent.PutExt

我有两个活动一个是InventoryActivity,第二个是StoneDetailActivity。在我的InventoryActivity中,在RecycleView中使用RecycleView按钮单击我使用下面的StartActivityForResult代码启动StoneDetail活动

Intent stonedetailIntent = new Intent(context, typeof(StoneDetailActivity));
stonedetailIntent.PutExtra("SearchitemObject", stoneJson);
stonedetailIntent.PutExtra("position", position);
context.StartActivityForResult(stonedetailIntent, 1000);
context.OverridePendingTransition(Resource.Animation.Slide_in_right, Resource.Animation.Fade_back);
在StoneDetailActivity按钮中,单击我使用此代码完成当前活动并转到OnBackPressed

在InventoryActivity中,我设置了这个代码

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            if (resultCode == Result.Ok)
            {

                bool checkflag = data.GetBooleanExtra("BoolCheck", false);
                int position = data.GetIntExtra("Position", -1);
                if (checkflag && position > -1)
                {
                    searchItems.RemoveAt(position);
                    inventAdapter.NotifyDataSetChanged();

                    txt_totalStone.Text = searchItems.Count.ToString();
                    txt_totalCarat.Text = searchItems.Sum(c => c.Weight.Value).ToString();
                    txt_totalAmount.Text = searchItems.Sum(c => c.Rate.Value).ToString();

                    mainActivityBool = true;

                    badgeCounttextView.Text = BizApplication.BADGE_COUNT.ToString();

                }

            }
        }
按钮点击代码:

这段代码第一次运行良好。但是,如果我执行相同的过程,StoneDetailActivity将在单击finish时设置为open Event

更新:

当我完全调试我的代码时,我发现当我第二次点击OnBackPressed时。然后再次完成我的调试,启动OnCreate活动,这就是它发生的原因。但我不会再开始了,为什么会这样呢

发生了什么我不明白。感谢您的帮助。

尝试添加标志意图


根据这篇文章,问题在于,在ListView或RecycleView中,如果我们执行一些任务,如OnclickListener,那么我们必须检查是否是OnclickListener,如下图所示,否则它将触发多个事件

 if (!button.HasOnClickListeners)
    {
        button.Click += this.clickHandler;
    }
那么代码就可以正常工作了

有关更多详细信息,请访问:

你看过这些文件了吗。如果没有,则查看以下内容:intent.addFlagsInt.FLAG\u ACTIVITY\u PREVIOUS\u IS\u TOP;当你调试时,你能看到finish正在调用,对吗?@Raghavendra是的,它完成了,但活动无法更改,它显示为打开状态。@Raghavendra查看我的更新问题。。只是一个测试用例,你能在返回时调用Finish并告诉我发生了什么吗?@Raghavendra nothing Occess活动未结束,因为我使用StartActivityForResult启动该活动如果结果未在上一个活动中得到,则返回并完成没有意义?
add_to_cart_button.Click += async (sender, e) =>
                {
                    ProgressDialog pdialog = new ProgressDialog(this);
                    pdialog.SetMessage("Please Wait...");
                    pdialog.Show();

                    cartItem = new CartItem();
                    cartItem.StoneId = searchItem.PacketId;
                    cartItem.UserId = BizApplication.getCredential().Id;
                    cartItem.Amount = searchItem.Rate.Value;
                    cartItem.Discount = searchItem.Discount;

                    postflag = await InventoryService.AddToCart(cartItem);

                    if (postflag)
                    {
                        OnBackPressed();
                        BizApplication.BADGE_COUNT += 1;
                    }

                    pdialog.Dismiss();

                };
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
 if (!button.HasOnClickListeners)
    {
        button.Click += this.clickHandler;
    }