gpt4 book ai didi

android - 布局表达式中可绘制对象的三元运算符

转载 作者:行者123 更新时间:2023-11-29 02:20:13 26 4
gpt4 key购买 nike

这是我的fragment_setting.xml

<ToggleButton
android:layout_width="47dp"
android:layout_height="27dp"
android:background="@{settingVm.isNotiOn ? @drawable/btn_on_mid : @drawable/btn_off_mid}"
android:onClick="@{()->settingVm.changeBtnStatus()}"
android:text="@string/on"
android:textOff="on"
android:textOn="on"
android:textSize="11sp"
android:textStyle="bold" />

<ToggleButton
android:layout_width="47dp"
android:layout_height="27dp"
android:background="@{settingVm.isNotiOn ? @drawable/btn_off_mid : @drawable/btn_on_mid}"
android:onClick="@{()-> settingVm.changeBtnStatus()}"
android:text="@string/off"
android:textOff="off"
android:textOn="off"
android:textSize="11sp"
android:textStyle="bold" />

这是我的SettingViewModel

class SettingViewModel(handler: SettingHandler) : ViewModel() {
var handler = handler
var isNotiOn: Boolean? = true
var visibility = View.VISIBLE

init {
if (BuildConfig.DEBUG) {
Timber.plant(Timber.DebugTree())
Timber.d("start")
}
}

fun onBackBtnPressed() {
Timber.d("onBackBtnPressed()")
handler.onBackBtnPressed()
}

fun showLogoutDialogue() {
Timber.d("showLogoutDialogue()")
handler.showLogoutDialogue()
}

fun changeBtnStatus(){
Timber.d("changeBtnStatus()")
handler.changeBtnStatus()
}
}

这是我的SettingFragment

...
val spUtil = SharedPreferenceUtil(activity!!)
when (spUtil.isNotificationOn) {
false -> {
binding!!.settingVm!!.isNotiOn = false
}
else -> {
binding!!.settingVm!!.isNotiOn = true
}
}
...
override fun changeBtnStatus() {
// TODO: Set real notification setting.

val spUtil = SharedPreferenceUtil(activity!!)
when (binding!!.settingVm!!.isNotiOn) {
true -> {
binding!!.settingVm!!.isNotiOn = false
spUtil.isNotificationOn = false
}
else -> {
binding!!.settingVm!!.isNotiOn = true
spUtil.isNotificationOn = true
}
}
}

有什么问题???我没有使用双向绑定(bind)和像 @={} 这样的三元运算符。但我认为我应该使用双向绑定(bind),因为它不是一个常量值。我有两个正确的图像。

有人说我不应该使用 is 前缀,因为它可能会生成 gettersetter。所以,我什至尝试删除它并定义 has 前缀或只是 NotiOn 但没有奏效。

最佳答案

请尝试此代码一次## 你的 XML 在代码中应该是这样的

<ToggleButton 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:button="@{settingVm.isNotiOn ? @drawable/btn_on_mid : @drawable/btn_off_mid}"/>

和以下 java 代码,您可以减少并以正确的形式获得结果。请在 fragment 类上使用此代码。

val spUtil = SharedPreferenceUtil(activity!!) tbutton.setOnCheckedChangeListener { buttonView, isChecked -> spUtil.isNotificationOn = isChecked binding!!.settingVm!!.isNotiOn = isChecked }

============================================= =========================

关于android - 布局表达式中可绘制对象的三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56591078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com