在 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。
我在网上搜索了答案,但没有找到我需要的解决方案。我的问题是如何再次重新创建菜单以更新 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。