0

У меня есть два вида деятельности: InventoryActivity, а второй - StoneDetailActivity. В моей InventoryActivity есть RecycleView В кнопке RecycleView. Я запускаю StoneDetailActivity с использованием StartActivityForResult ниже кода.Финишная деятельность не закрыта в Android (Xamarin)

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 установить событие открыто, если я нажму закончить.

ОБНОВЛЕНИЕ:

Когда я полный отладки мой код и я обнаружил, что, когда я нажимаю на второй раз OnBackPressed(). и закончить его, моя отладка снова начнет работу OnCreate, поэтому это происходит. Но я не начинаю Снова, то почему происходит.

Что случилось, я не понимаю. Любая помощь должна быть оценена.

+0

Когда у отладки могут видеть финиш вызова() правильно? – Raghavendra

+0

@Raghavendra да, он закончен, но активность не может измениться, и она отображается как открытая. – Ironman

+0

@ Raghavendra см. Мой вопрос с вопросом .. – Ironman

ответ

-1

попробовать, добавив флаг Intent

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP); 
+0

Я не хочу «чистить» мою историю? – Ironman

+0

см. Ваш код u переопределил неправильный метод обратного вызова –

+0

вы видите документы. если нет, то см. это: https://developer.xamarin.com/api/member/Android.App.Activity.OnBackPressed()/ – Ironman

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