上的动作条图标文本并没有更新的新的计(Text on an ActionBar Icon is no

2019-09-25 15:07发布

正在膨胀的片段内的菜单项onCreateOptionsMenu()

要点1:但这里onCreateOptionsMenu呼吁多的时间,我没有在那里调用invalidateOptionMenu()内的片段和我没有得到为什么会是这个样子。

要点2:我更新购物车数量(徽章计数),请看看下面我的代码, mCartCountTextView是持有TextView的,保存的计数值成员。 正在设置mCartCountTextView在片段的一些地方通过调用refreshCartCount()但价值mCartCountTextView即使没有更新SharedPreference已更新值。

代码片段:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);

    menu.clear();
    inflater.inflate(R.menu.menu_base, menu);
    MenuItem cartItem = menu.findItem(R.id.action_cart);
    cartItem.setActionView(R.layout.base_menu_custom_layout);
    cartItem.getActionView().setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mMenuClickListener.onCartClick();
        }
    });
    mCartCountTextView = ((TextView) cartItem.getActionView().findViewById(R.id.cart_count));
    refreshCartCount();
}

public void refreshCartCount() {

    if (PreferenceManager.getInstance(getActivity()).getCustomerCartCount() == 0)
        mCartCountTextView.setVisibility(View.GONE);
    else {
        mCartCountTextView.setVisibility(View.VISIBLE);
        mCartCountTextView.setText(String.valueOf(PreferenceManager.getInstance(getActivity()).getCustomerCartCount()));
    }
}

我如何解决它?

这里是调用invalidateOptionsMenu()相同的片段中。

@Override
public void setCartResponse(CartListDTO response) {
    hideProgressBar();
    showToast(response.message);
    if (response.status == 1) {
        mCartBtn.setText(R.string.go_to_cart);
        getActivity().invalidateOptionsMenu();
    }
}
文章来源: Text on an ActionBar Icon is not updating on new count