При проверке условия проверяется первое присвоенное значение переменной. А мне надо что бы проверялось повторно присвоенное значение

Рейтинг: 0Ответов: 0Опубликовано: 25.02.2023

При завершение работы ActionMode проверяется конструкция else if. ActionModeController(tracker).isActionMode проверяет значение этой переменной в классе, но проверяет первое присвоенное а при срабатывание метода onDestroyActionMode переменной присваивается true. Он и должен проверяться. Вследствие этого средний блок не срабатывает из-за неверного условия. Как исправить?

MainActivity.kt

tracker.addObserver(object : SelectionTracker.SelectionObserver<Model>() {
            override fun onSelectionChanged() {
                super.onSelectionChanged()

                if (tracker.hasSelection() && actionMode == null && !ActionModeController(tracker).isActionMode) {
                    actionMode = startSupportActionMode(ActionModeController(tracker))
                    setSelectedTitle(tracker.selection.size())
                    Log.d("tracker", "Начало работы ActionMode")
                } else if (ActionModeController(tracker).isActionMode && actionMode != null) {
                    setSelectedTitle(tracker.selection.size())
                    actionMode = null
                    Log.d("tracker", "Трекер закончил работу")
                } else {
                    setSelectedTitle(tracker.selection.size())
                }
            }
        })

ActionModeController.kt

class ActionModeController(private val tracker: SelectionTracker<Model>?): ActionMode.Callback {

    var isActionMode: Boolean = false

    override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        mode?.menuInflater?.inflate(R.menu.action_mode_menu, menu)
        return true
    }

    override fun onPrepareActionMode(mode: ActionMode?, menu: Menu?): Boolean {
        return true
    }

    override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
        when(item?.itemId) {
            R.id.delete -> {

            }

        }
        return true
    }

    override fun onDestroyActionMode(mode: ActionMode?) {
        isActionMode = true
        tracker?.clearSelection()
        Log.d("ActionMode", "Трекер очистил список выделенных элементов и завершил работу")
    }
}

Ответы

Ответов пока нет.