У меня есть два вида деятельности: 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
, поэтому это происходит. Но я не начинаю Снова, то почему происходит.
Что случилось, я не понимаю. Любая помощь должна быть оценена.
Когда у отладки могут видеть финиш вызова() правильно? – Raghavendra
@Raghavendra да, он закончен, но активность не может измениться, и она отображается как открытая. – Ironman
@ Raghavendra см. Мой вопрос с вопросом .. – Ironman