如何刷新以前的 activity 工具栏菜单(购物车)值

How to refresh previous activity ToolBar menu (Cart) value

我有 2 个 activity。第一个 activity 具有工具栏菜单,因为 Cart.And 值的增加或减少取决于购物车的数量。下一个 activity fragmnet 有购物车 Functionality.Here 我们可以删除购物车产品。

让我们考虑一下图像:

  1. 图片 1 的购物车数为 3。
  2. 购物车功能页面的计数为 3。
  3. 现在我删除第一个产品。
  4. 在相应的页面中,它从以前的值中扣除。
  5. 但是当我来到第一个 activity 时,它没有刷新,而不是 2,它有 3 作为购物车计数。

如何刷新第一个 activity 而我使用 onBackpressed 第二个 activity。 请帮助我。

您可以在片段 class 中通过 ((YourHomeActivity)getActivity()) 获取 activity 引用。使您的工具栏变量 public 并通过 activity 引用访问它以更新它。

在第一个 Activity 的 onRestart 方法中检查购物车商品数量(比如它的增加或减少)调用 onPrepareOptionmenu 方法来更新数量(确保您的数量在到达之前更新首先 activity)。您必须维护临时计数和实际计数。希望你明白!

你可以做的一件事是使用 Sharepreference 来存储购物车的价值,这样它就会改变所有 activity 并将代码放在 onResume() 方法中

我用invalidateOptionsMenu();实现了

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);

    badgeLayout = (RelativeLayout) menu.findItem(R.id.badge).getActionView();           /*-------Cart Basket with Counter---------*/
    mCounter = (TextView) badgeLayout.findViewById(R.id.counter);

    CommonUtil.dbUtil.open();
    MainFragmentAdapter.CART_COUNT = String.valueOf(CommonUtil.dbUtil.getCartItem().getCount());
    MainActivity.mCounter.setText(MainFragmentAdapter.CART_COUNT);

    invalidateOptionsMenu();

    badgeLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Config.menuItemClicked = true;
            SharedPreferences.Editor editor = CommonUtil.pref.edit();
            editor.putBoolean("cart_Clicked", Config.menuItemClicked);
            editor.apply();
            Intent next = new Intent(context, ProductActivity.class);
            startActivity(next);
        }
    });
    return super.onCreateOptionsMenu(menu);
}