java - isChecked 无法在 Kotlin 上以编程方式处理复选框
问题描述
我正在尝试使用 ischeked 函数填充一个复选框,但无论我做什么,它似乎都不起作用,我尝试使用 .clearFocus()、toggle()、jumpDrawablesToCurrentState() 但任何方法都有效,我已经尝试过在我创建我的复选框之后填充它,然后当我比较来自firebase的结果但它无论如何都不起作用时,这是我的完整代码希望你能帮助我。
private var mNameField: EditText? = null
private var mPhoneField: EditText? = null
private var mBack: Button? = null
private var mConfirm: Button? = null
private var mProfileImage: ImageView? = null
private var mAuth: FirebaseAuth? = null
private var mUserDatabase: DatabaseReference? = null
private var userId: String? = null
private var name: String? = null
private var biografia: String? = null
private var profileImageUrl: String? = null
private var userSex: String? = null
private var resultUri: Uri? = null
private var mRadioGroupBuscar: RadioGroup? = null
private var valormRadioGroupBuscar: RadioGroup? = null
private lateinit var radioButtonBuscaSexo: RadioButton
private var PC: CheckBox?=null
private var Playstation: CheckBox?=null
private var Xbox : CheckBox?=null
private var Nintendo : CheckBox?=null
private var Movil: CheckBox?=null
private var aString: String?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
mNameField = findViewById<View>(R.id.name) as EditText
mPhoneField = findViewById<View>(R.id.phone) as EditText
mProfileImage = findViewById<View>(R.id.profileImage) as ImageView
mBack = findViewById<View>(R.id.back) as Button
mConfirm = findViewById<View>(R.id.confirm) as Button
mAuth = FirebaseAuth.getInstance()
userId = mAuth?.currentUser!!.uid
mUserDatabase = FirebaseDatabase.getInstance().reference.child("Users").child(userId!!)
mRadioGroupBuscar = findViewById<View>(R.id.radioGroupBusca) as RadioGroup
val selectIdBuscaSexo = mRadioGroupBuscar!!.checkedRadioButtonId
//val radioButtonBuscaSexo = findViewById<View>(selectIdBuscaSexo) as RadioButton
PC = findViewById<View>(R.id.checkBoxPc) as CheckBox?
Xbox = findViewById<View>(R.id.checkBoxXbox) as CheckBox?
Nintendo = findViewById<View>(R.id.checkBoxNintendo) as CheckBox?
Movil = findViewById<View>(R.id.checkBoxMovil) as CheckBox?
Playstation = findViewById<View>(R.id.checkBoxPlaytation) as CheckBox?
//I HAVE TRIED TO CHECK MY CHECKBOX HERE
// Playstation?.jumpDrawablesToCurrentState()
// Playstation?.isChecked = true
Playstation!!.clearFocus()
Playstation!!.isChecked= true;
userInfo
mProfileImage!!.setOnClickListener {
val intent = Intent(Intent.ACTION_PICK)
intent.type = "image/*"
startActivityForResult(intent, 1)
}
mConfirm!!.setOnClickListener { saveUserInformation() }
mBack!!.setOnClickListener(View.OnClickListener {
finish()
return@OnClickListener
})
}
private val userInfo: Unit
private get() {
mUserDatabase!!.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onDataChange(dataSnapshot: DataSnapshot) {
if (dataSnapshot.exists() && dataSnapshot.childrenCount > 0) {
val map = dataSnapshot.value as Map<String, Any?>?
if (map!!["Name"] != null) {
name = map["Name"].toString()
mNameField!!.setText(name)
}
if (map["biografia"] != null) {
biografia = map["biografia"].toString()
mPhoneField!!.setText(biografia)
}
if (map["sexo"] != null) {
userSex = map["sexo"].toString()
}
if (map["Playstation"].toString() != "false") {
var aString = map["Playstation"].toString()
//HERE I tried to Cheked
Playstation?.isChecked
Playstation?.isChecked = true
Playstation?.jumpDrawablesToCurrentState()
}
Glide.with(mProfileImage!!.context).clear(mProfileImage!!)
if (map["profileImageUrl"] != null) {
profileImageUrl = map["profileImageUrl"].toString()
when (profileImageUrl) {
"default" -> Glide.with(application).load(R.mipmap.ic_launcher).into(mProfileImage!!)
else -> Glide.with(application).load(profileImageUrl).into(mProfileImage!!)
}
}
}
}
override fun onCancelled(databaseError: DatabaseError) {}
})
}
private fun saveUserInformation() {
name = mNameField!!.text.toString()
biografia = mPhoneField!!.text.toString()
var buscasex = radioButtonBuscaSexo.text.toString()
val userInfo: java.util.HashMap<Any?, Any?> = java.util.HashMap<Any?, Any?>()
userInfo["Name"] = name
userInfo["biografia"] = biografia
// userInfo["buscarSexo"] = buscasex
// userInfo["PC"] = checkIfItsChecked(PC!!)
userInfo["Playstation"] = checkIfItsCheckedString(aString!!)
// userInfo["Xbox"] = checkIfItsChecked(Xbox!!)
// userInfo["Nintendo"] = checkIfItsChecked(Nintendo!!)
// userInfo["Movile"] = checkIfItsChecked(Movil!!)
mUserDatabase?.updateChildren(userInfo as Map<String, Any>)
val a = 1
if (resultUri != null) {
val filepath = FirebaseStorage.getInstance().reference.child("profileImages").child(userId!!)
var bitmap: Bitmap? = null
try {
bitmap = MediaStore.Images.Media.getBitmap(application.contentResolver, resultUri)
} catch (e: IOException) {
e.printStackTrace()
}
val baos = ByteArrayOutputStream()
bitmap!!.compress(Bitmap.CompressFormat.JPEG, 20, baos)
val data = baos.toByteArray()
val uploadTask = filepath.putBytes(data)
uploadTask.addOnFailureListener { finish() }
uploadTask.addOnSuccessListener(OnSuccessListener { taskSnapshot ->
val downloadUrl = taskSnapshot.storage.downloadUrl
while (!downloadUrl.isSuccessful);
val resultdowloadUrl: Uri? = downloadUrl.getResult()
val userInfo: MutableMap<String, Any?> = HashMap<String, Any?>()
Log.e("uri12",resultdowloadUrl.toString()+"This is uri of image download");
Toast.makeText(this, resultdowloadUrl.toString(), Toast.LENGTH_SHORT).show();
userInfo.set("profileImageUrl", resultdowloadUrl.toString())
mUserDatabase!!.updateChildren(userInfo as Map<String, Any>)
finish()
return@OnSuccessListener
})
} else {
finish()
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
val imageUri = data?.data
resultUri = imageUri
mProfileImage!!.setImageURI(resultUri)
}
}
private fun checkIfItsChecked(checkBox: CheckBox): Boolean{
return checkBox.isChecked
}
private fun checkIfItsCheckedString(string: String): Boolean{
return string == "true"
}
}
解决方案
推荐阅读
- java - Android Studio 错误 android.support.v4.app.NotificationSideChannel$tub$Proxy
- karate - 如何在空手道中传递表单字段时禁用编码
- python - `pip install` 红色警告的最佳实践?
- android - 如何查看按ID排序的RecyclerView项目?
- java - clone() 方法是否必须克隆对象中所有级别中的所有引用?
- emacs - 在 Emacs 26.1 中挂钩新的行号模式不起作用
- c++ - 5 CPU的Task调度N个进程
- node.js - 我可以使用原生 es6 模块 (mjs) 对本地模块使用裸导入吗?
- python - ReverseMatch 适用于 jsonResponse 但不适用于渲染
- sql - oracle中如何修改OBJECT TYPE TABLE的大小