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