如何隐藏 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
我想在 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