我有一个带有菜单项的活动。每次用户参与此活动时,我都想用一些实用程序值更新textView的值。这是我的密码。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_my2, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu){
RelativeLayout badgeLayout = (RelativeLayout) menu.findItem(R.id.badge).getActionView();
TextView tv = (TextView) badgeLayout.findViewById(R.id.actionbar_notifcation_textview);
tv.setText(String.valueOf(Utility.ShoppingCartItemCount()));
return true;
}
这只会更新一次值(在启动活动时)。但是,当用户离开此活动并再次参与此活动时,即使Utility的值也不会更新。ShoppingCartItemCount()会更新。
如何解决这个问题?
尝试invalidateOptionsMenu()
这将再次调用CreateOptionsMenu(菜单)。
编辑)
我有一些代码如下
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (currentPage == 8) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_p, menu);
return true;
} else {
return false;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.purchaseRestore:
// TODO: Restore purchase
return true;
case R.id.purchaseTerm:
// TODO: Show Term by WebView
return true;
default:
return super.onOptionsItemSelected(item);
}
}
当我的用户单击其他按钮时,在按钮的OnClickListener中,将invalidateOptionsMenu()放在currentPage=8之后。结果,用户可以显示选项菜单。
编辑))
invalidateOptionsMenu()将强制重新加载创建选项菜单和准备选项菜单。
如果这些方法不适用,请尝试调试Utility.ShoppingCartItemCount().