如何隐藏 ListPreference 的对话框或防止在 setOnPreferenceClickListener 方法中打开它但当然不禁用首选项

How can I hide Dialog of ListPreference or prevent opening it in setOnPreferenceClickListener method but not disabling preference of course

我想在 ListPreference 中显示绑定的蓝牙设备列表,但是设备上的蓝牙可能被禁用,我需要先启用它,我调用了启用 BT 的意图,当然还有对话框此首选项的弹出窗口

listPreference.setOnPreferenceClickListener {
    if (!btAdapter.isEnabled) {
        val enableAdapter = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
        if (enableAdapter.canBeHandled(context.packageManager)) {
            startActivityForResult(enableAdapter, BLUETOOTH_REQUEST_ENABLE_CODE)
        }
    }
    true
}

如何关闭此对话框或阻止它在某些情况下显示 (!btAdapter.isEnabled)?

决定创建自定义 class:

class ListPreferenceActiveControl : ListPreference {

    var isActive = true

    constructor(context: Context?) : super(context)

    constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)

    constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(
        context,
        attrs,
        defStyleAttr
    )

    override fun onClick() {
        if (isActive) {
            super.onClick()
        }
    }
}

然后:

listPreference.isActive = btAdapter.isEnabled