ActionBar图标上的文本未更新新计数

时间:2016-05-10 09:35:05

标签: android toolbar

正在片段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();
    }
}

0 个答案:

没有答案