我目前被困在如何更改當前代碼以顯示用戶是否選擇了不適合并且它將顯示電影和戲劇復選框,否則如果取消選中它會消失電影和戲劇復選框并且只顯示不適合復選框
我在 Movie.kt 中的當前代碼
chkBoxNotsuit.setOnCheckedChangeListener {
if (chkBoxNotsuit.isChecked == true)
chkBoxMovie.isVisible = !isChecked
chkBoxDrama.isVisible = !isChecked
else
chkBoxMovie.isInvisible = !notChecked
chkBoxDrama.isInvisible = !notChecked
displayToast(message)
}
fun displayToast(message:String){
Toast.makeText(this,message,Toast.LENGTH_LONG).show()
}
uj5u.com熱心網友回復:
你可以這樣做
chkBoxNotsuit.setOnCheckedChangeListener { _, isChecked ->
chkBoxMovie.visibility = if (isChecked) View.VISIBLE else View.GONE
chkBoxDrama.visibility = if (isChecked) View.VISIBLE else View.GONE
}
uj5u.com熱心網友回復:
chkBoxNotsuit=findViewById(R.id.chkBoxNotsuit)
linearLayout=findViewById(R.id.linearlayout)
chkBoxNotsuit.setOnCheckedChangeListener { buttonView, isChecked ->
if(isChecked){
linearLayout.isVisible=true // Setting the checkboxes Visible
}else{
linearLayout.isVisible=false // Setting the checkboxes Invisible
displayToast(message)
}
}
}
fun displayToast(message:String){
Toast.makeText(this,message,Toast.LENGTH_LONG).show()
}
}
在 Movie.xml 中,您還必須將 android:visibility="invisible" 作為線性布局的屬性。
uj5u.com熱心網友回復:
您缺少 if/else 的括號。除非你正在做一個單行來分配給一個變數,否則永遠不要省略括號,因為它可能導致各種錯誤。
您正在混淆變數名稱。您在更改偵聽器中使用了
isCheckedand 。notChecked但是,您如何知道在呼叫此偵聽器時這些值是否是最新的?您需要使用實際復選框的屬性來獲取當前值,或偵聽器提供的值。你的邏輯太復雜了。
== true檢查布林值時不需要這樣做。這是多余的,因為==檢查回傳真或假,所以就像說,如果這是真的,讓它成為真的。您可以通過簡單地使用布林值來設定您的值來避免整個 if/else 檢查。
這是您的代碼的簡化版本
chkBoxNotsuit.setOnCheckedChangeListener { _, isChecked ->
chkBoxMovie.isVisible = !isChecked
chkBoxDrama.isVisible = !isChecked
displayToast(message)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/529189.html
標籤:安卓科特林
