在 BaseAdapter 中使用 invalidateOptionsMenu

use invalidateOptionsMenu inside BaseAdapter

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

这一行在订购商品的末尾。

setNotifCount(db.getCartCount());

这就是函数。

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

它表明 invalidateOptionsMenu(); 是一个错误,因为它无法解析该方法。我尝试使用 ActivityCompat.invalidateOptionsMenu() 但它也会抛出 NPE。

您不能调用 invalidateOptionsMenu(),因为基本适配器中没有这样的方法。您可以做的是将您的 activity 作为上下文传递给基本适配器并按如下方式调用。

        ((YourActivity)context).invalidateOptionsMenu();

同时调用 ActivityCompat.invalidateOptionsMenu() 将通过 NPE,因为您在 class 而不是对象上调用 invalidateOptionsMenu。