【问题标题】:Else not working in setOnClickListener KOTLIN否则在 setOnClickListener KOTLIN 中不起作用
【发布时间】:2021-11-06 12:30:01
【问题描述】:

我是 Android Studio 和 KOTLIN 的初学者。请检查我的问题。

代码:

class getOTP : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_get_otp)
    
        val inputCode1 = findViewById<EditText>(R.id.inputCode1).text.toString()
        val inputCode2 = findViewById<EditText>(R.id.inputCode2).text.toString()
        val inputCode3 = findViewById<EditText>(R.id.inputCode3).text.toString()
        val inputCode4 = findViewById<EditText>(R.id.inputCode4).text.toString()
    
        val verifyOTPButtonOne = findViewById<Button>(R.id.verifyOTPButtonOne)
        verifyOTPButtonOne.setOnClickListener {
            if(inputCode1 == "" || inputCode2 == "" || inputCode3 == "" || inputCode4 == ""){
                Toast.makeText(applicationContext,"Please Enter Correct OTP",Toast.LENGTH_SHORT).show()
             }
             else {
                 val intent = Intent(this, VerifySuccess::class.java)
                     startActivity(intent)
                 }
             }
         }
    }
}

问题:在这里,输入所有 4 个文本字段后,toast 仍然出现并且 Activity 没有启动。

【问题讨论】:

    标签: android android-studio kotlin android-layout


    【解决方案1】:

    您只读取一次文本字段的值,此时您对它们调用.toString()。所以onClickListener中的if只检查文本字段的初始值。

    您必须调用.toString() inside 监听器以使其做出适当反应,或者您可以直接在Editable 上调用isEmpty(),因为它实现了CharSequence

    class getOTP : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_get_otp)
        
            val inputCode1 = findViewById<EditText>(R.id.inputCode1)
            val inputCode2 = findViewById<EditText>(R.id.inputCode2)
            val inputCode3 = findViewById<EditText>(R.id.inputCode3)
            val inputCode4 = findViewById<EditText>(R.id.inputCode4)
        
            val verifyOTPButtonOne = findViewById<Button>(R.id.verifyOTPButtonOne)
            verifyOTPButtonOne.setOnClickListener {
                if(inputCode1.text.isEmpty() || inputCode2.text.isEmpty() || inputCode3.text.isEmpty() || inputCode4.text.isEmpty()){
                    Toast.makeText(applicationContext,"Please Enter Correct OTP",Toast.LENGTH_SHORT).show()
                } else {
                    val intent = Intent(this, VerifySuccess::class.java)
                    startActivity(intent)
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多