android - 如何通过点击Fragment中的菜单项来设置和更新工具栏中的标题?
问题描述
我需要设置所选类别的名称,下面是我通过单击调用的类别对象代码和方法。感谢您的帮助。
类别项目对象:
@Entity(tableName = "category_table")
@Parcelize
data class CategoryItem(
val categoryName: String,
val categoryNumber: Int,
val categoryShown: Boolean = false,
@PrimaryKey(autoGenerate = true) var id: Int = 0
) : Parcelable {
}
在菜单中:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
R.id.action_cat1 -> {
viewModel.onChooseCategoryClick(1)
true
}
R.id.action_cat2 -> {
viewModel.onChooseCategoryClick(2)
true
}
ViewModel 中的 onChooseCategoryClick():
fun onChooseCategoryClick(chosenCategory: Int) = viewModelScope.launch {
preferencesManager.updateCategoryChosen(chosenCategory)
// what to type here
}
在偏好管理器中:
suspend fun updateCategoryChosen(categoryChosen: Int) {
dataStore.edit { preferences ->
preferences[PreferencesKeys.CATEGORY_CHOSEN] = categoryChosen
}
}
解决方案
该choosenCategory
值与菜单项上的其中一项的 id 相同。因此,您可以使用以下方法找到它when
:
when(choosenCategory){
R.id.action_cat1->
R.id.action_cat2->
}
推荐阅读
- php - 如何重写这样的 URL (localhost/mvc/public/index.php?url=watch?v=ohGXBKUkK4c)?
- javascript - React history.push 重新加载组件。希望它只加载一次
- wordpress - 联系表格 7 将图像添加到每个无线电输入
- css - 如何访问后跟 ul 元素的锚标记?
- c# - 使用 Symbola 字体从代码后面写入 Label.Content
- azure - 如何通过 URL 从 Azure Databricks 中的 DBFS 下载
- mysql - 如何使用 groupby 对 mysql 进行排名
- javascript - Bootstrap Table - 根据 Cell 内的值将类添加到 Row
- laravel-5.5 - LARAVEL 错误:“抱歉,找不到您要查找的页面。”
- python - 在python的打印语句中实现60秒倒计时