我有两个活动,一个是InventoryActivity
,第二个是StoneDetailActivity
。在我的InventoryActivity中有RecycleView
在RecycleView按钮中点击我使用下面代码StoneDetailActivity
启动StartActivityForResult
。
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()
。
public override void OnBackPressed()
{
Intent intent = new Intent();
intent.PutExtra("BoolCheck", postflag);
intent.PutExtra("Position", position);
SetResult(Result.Ok, intent);
Finish();
}
和在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();
}
}
}
按钮点击代码:
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();
};
此代码适用于第一次。但是,如果我执行相同的过程,StoneDetailActivity
设置打开即可,如果我点击完成。
UpDate:
当我完全调试我的代码时,我发现当我点击第二次OnBackPressed()时。并完成它我的调试再次启动OnCreate
活动,这就是它发生的原因。但我没有重新开始,那么为什么会发生。
我不明白发生了什么。任何帮助都要得到赞赏。
答案 0 :(得分:0)
根据这篇文章,问题是在ListView
或RecycleView
内,如果我们执行了OnclickListener
这样的任务,那么我们检查OnclickListener
就像下面的其他方式一样将发射多个事件。
if (!button.HasOnClickListeners)
{
button.Click += this.clickHandler;
}
然后代码工作正常。
有关详细信息,请访问: https://forums.xamarin.com/discussion/9244/single-click-on-button-invoking-multiple-clicks
答案 1 :(得分:-1)
尝试添加标志意图
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);