我已经在网上搜索了答案,但找不到我需要的解决方案。我的问题是如何重新创建菜单以更新BaseAdapter中的购物车计数图标。我现在正在使用的应用程序是一个计算用户订购商品的应用程序,它还具有商品类别。当我返回显示类别的活动时,购物车会更新,但无法在我的商品适配器中进行。代码很简单。

该行位于订购商品的结尾。

setNotifCount(db.getCartCount());


这就是功能。

private void setNotifCount(int count){
         mNotifCount = count;
         invalidateOptionsMenu();
}


它显示invalidateOptionsMenu();是错误,因为它无法解析该方法。我尝试使用ActivityCompat.invalidateOptionsMenu(),但它也会引发NPE。

最佳答案

您不能调用invalidateOptionsMenu(),因为基本适配器中没有这样的方法。您可以做的是将活动作为上下文传递给基本适配器,然后按如下所示进行调用。

        ((YourActivity)context).invalidateOptionsMenu();


当您在类而不是对象上调用invalidateOptionsMenu时,也会通过NPE调用ActivityCompat.invalidateOptionsMenu()。

10-08 06:01