完成活动在Android中未关闭(Xamarin)
我有两个活动一个是InventoryActivity,第二个是StoneDetailActivity。在我的InventoryActivity中,在RecycleView中使用RecycleView按钮单击我使用下面的StartActivityForResult代码启动StoneDetail活动完成活动在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
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;
}