android - 滑动期间无法更新 ViewPager 中的菜单项状态
问题描述
我的菜单中有最喜欢的图标,而ViewPager
. 当我单击项目时,它会改变。但是当我刷卡时,它不记得项目的状态。
我已经实施setOnPageChangeListener
并onPageSelected
检查了项目的状态并更改了可绘制对象。
override fun onPageSelected(position: Int) {
currentPage = position
if (imageModelArrayList!![currentPage].isFavourite == true) {
isExistInFavorite = true
menuItem?.icon =
ContextCompat.getDrawable(
applicationContext,
R.drawable.ic_favorite_black_24dp
)
helper.updateGreetingByID(true, id)
} else {
isExistInFavorite = false
menuItem?.icon =
ContextCompat.getDrawable(
applicationContext,
R.drawable.ic_favorite_border_black_24dp
)
helper.updateGreetingByID(false, id)
}
}
这是项目点击
R.id.action_favorite -> {
if (!isExistInFavorite) {
greetingModel.id?.let { helper.updateGreetingByID(true, id) }
menuItem?.icon =
ContextCompat.getDrawable(this, R.drawable.ic_favorite_black_24dp)
Toast.makeText(
this@ImageDetailActivity,
"Favourite added",
Toast.LENGTH_SHORT
).show()
isExistInFavorite = true
} else {
isExistInFavorite = false
menuItem?.icon =
ContextCompat.getDrawable(this, R.drawable.ic_favorite_border_black_24dp)
Toast.makeText(
this@ImageDetailActivity,
"favourite deleted",
Toast.LENGTH_SHORT
).show()
greetingModel.id?.let { helper.updateGreetingByID(false, id) }
}
return true
}
解决方案
您可能需要在更改图标后调用invalidateOptionsMenu() 。
推荐阅读
- c - 使用 Emscripten 警告“移位计数 >= 类型宽度”
- r - R:如何修改 CreateTable() 函数以进行重复观察并使用错误索引?
- java - 有没有办法在没有任何 Unicode 方向格式代码的情况下编写带有数字的混合方向文本
- django - django-prometheus 重启后缺少指标
- git - Git比较另一个提交中的一个文件
- react-leaflet - 创建后如何从地图中清除注释
- javascript - 我无法在 html 中一一显示 javascript 数组的项目
- javascript - 在 JSON 的开头和结尾添加单引号
- json - 解析股票市场数据的嵌套 JSON 数据
- web-scraping - Google 表格:从 IMPORTDATA() 中拆分多行分隔文本