Котлин, если еще заявление - PullRequest
0 голосов
/ 01 мая 2018

В настоящее время у меня есть рабочий оператор if, но если пользователь вводит любое из трех полей, он может отправлять данные. Как заставить оператор if else работать так, что если все три поля не заполнены, вы не можете отправлять данные.

class MainActivity : AppCompatActivity() {

    var editText: EditText? = null
    var editText2: EditText? = null;
    var editText3: EditText? = null;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        editText = findViewById<EditText>(R.id.editText)
        editText2 = findViewById<EditText>(R.id.editText2)
        editText3 = findViewById<EditText>(R.id.editText3)
    }


    /** Called when the user taps the Send button */
    fun sendMessage(view: View) {


        if (editText!!.text.toString().length == 0) {
            Toast.makeText(this, "You did not enter your name", Toast.LENGTH_SHORT).show();

            if (editText2!!.text.toString().length == 0)
                Toast.makeText(this, "You did not enter a email address", Toast.LENGTH_SHORT).show();

            if (editText3!!.text.toString().length == 0)
                Toast.makeText(this, "You did not enter a comapny name", Toast.LENGTH_SHORT).show();
            return;
        }else if {

            val message1 = editText!!.text.toString()
            val message2 = editText2!!.text.toString()
            val message3 = editText3!!.text.toString()

            val intent = Intent(this, DisplayMessageActivity::class.java).apply {
                putExtra("EXTRA_MSG1", message1)
                putExtra("EXTRA_MSG2", message2)
                putExtra("EXTRA_MSG3", message3)

            }

            startActivity(intent)
        }
    }
} 

Ответы [ 4 ]

0 голосов
/ 21 мая 2019

Я использую TextUtils.isEmpty (). Согласно документации, он возвращает true, если строка равна нулю или длина равна нулю.

https://developer.android.com/reference/android/text/TextUtils#isEmpty(java.lang.CharSequence)

0 голосов
/ 01 мая 2018

Вы можете использовать оператор when. Я создал несколько функций расширения, чтобы сделать код более читабельным:

fun TextView?.getText(): String = this?.text?.toString() ?: ""

fun TextView?.isEmpty(): Boolean = this?.text?.isEmpty() ?: false

fun showToast(msg: String) {
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
}

fun sendMessage(view: View) {
    when {
        editText.isEmpty() -> showToast("You did not enter your name")
        editText2.isEmpty() -> showToast("You did not enter a email address")
        editText3.isEmpty() -> showToast("You did not enter a comapny name")
        else -> openActivity()
    }
}

fun openActivity() {
    val intent = Intent(this, DisplayMessageActivity::class.java).apply {
        putExtra("EXTRA_MSG1", editText.getText())
        putExtra("EXTRA_MSG2", editText2.getText())
        putExtra("EXTRA_MSG3", editText3.getText())
    }

    startActivity(intent)
}

Я также предлагаю вам изменить EditText декларации на lateinit var, чтобы не иметь дело с этими проверками обнуляемости:

lateinit var editText: EditText
lateinit var editText2: EditText
lateinit var editText3: EditText
0 голосов
/ 01 мая 2018

у вас может быть короткая функция, которая проверяет введенные данные, как это

  fun TextView.isEmpty():Boolean{
     return this?.text?.isEmpty()
    }

    fun showMessage(msg:String){
     //show some message here
     Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
    }

    fun openActivity(m1:String="",m2:String="",m3:String=""){
     val intent = Intent(this, DisplayMessageActivity:: class.java).apply {
                putExtra("EXTRA_MSG1", m1)
                putExtra("EXTRA_MSG2", m2)
                putExtra("EXTRA_MSG3", m3)
            }
     startActivity(intent)
    }

    fun valid(){
     if(editText.isEmpty() or editText1.isEmpty() or editText2.isEmpty()){
       showMessage()
     }else{
       openActivity()  
     }
    }
0 голосов
/ 01 мая 2018

Попробуйте этот код ..

fun sendMessage(view:View) {


    if (TextUtils.isEmpty(editText !!.text.toString())){
        Toast.makeText(this, "You did not enter your name", Toast.LENGTH_SHORT).show();
    }
    if (TextUtils.isEmpty(editText2 !!.text.toString())){
        Toast.makeText(this, "You did not enter a email address", Toast.LENGTH_SHORT).show();
    }
    if (TextUtils.isEmpty(editText3 !!.text.toString())){
        Toast.makeText(this, "You did not enter a comapny name", Toast.LENGTH_SHORT).show();
    }
    if (TextUtils.isEmpty(editText !!.text.toString())&&TextUtils.isEmpty(editText2 !!.
    text.toString())&&TextUtils.isEmpty(editText3 !!.text.toString())){
        val message1 = editText !!.text.toString()
        val message2 = editText2 !!.text.toString()
        val message3 = editText3 !!.text.toString()

        val intent = Intent(this, DisplayMessageActivity:: class.java).apply {
            putExtra("EXTRA_MSG1", message1)
            putExtra("EXTRA_MSG2", message2)
            putExtra("EXTRA_MSG3", message3)

        }

        startActivity(intent)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...