在BaseAdapter中使用invalidateOptionsMenu

问题描述 投票:0回答:1

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

这一行是在订购商品的最后。

setNotifCount(db.getCartCount());

这就是功能。

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

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

android baseadapter
1个回答
3
投票

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

        ((YourActivity)context).invalidateOptionsMenu();

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

© www.soinside.com 2019 - 2024. All rights reserved.