如何在android中更新菜单项



我有一个带有菜单项的活动。每次用户参与此活动时,我都想用一些实用程序值更新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().

最新更新