首页 > 解决方案 > 如何通过点击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
    }
}

标签: androidkotlinandroid-toolbarandroid-mvvmandroid-jetpack-datastore

解决方案


choosenCategory值与菜单项上的其中一项的 id 相同。因此,您可以使用以下方法找到它when

when(choosenCategory){
    R.id.action_cat1->
    R.id.action_cat2->
}

推荐阅读