【问题标题】:Kotlin(Android Studio) - I Dont wanna go to the new activity if TextFields are emptyKotlin(Android Studio) - 如果 TextFields 为空,我不想去新活动
【发布时间】:2019-08-04 08:58:34
【问题描述】:

我正在练习 'kotlin room persistence' 库保存数据并通过按保存用户按钮向另一个活动显示,但如果字段为空,我不想转到新活动。

我尝试过简单的 if 语句

if (user.toString().trim().isNotEmpty()) {
   Toast.makeText(this, "Fields are empty", Toast.LENGTH_SHORT).show() 
}

这个..但它也不起作用..

这是我的代码:

package com.example.app

import android.arch.persistence.room.Room
import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.Toast
import com.example.app.roomDataBase.AppDb
import com.example.app.roomDataBase.UserDataClassRoom
import kotlinx.android.synthetic.main.create_user.*

class CreateUser : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.create_user)

        val db = Room.databaseBuilder(
            applicationContext
            , AppDb::class.java, "database-name"
        ).allowMainThreadQueries()
            .build()

        btnSaveUser.setOnClickListener {

            val user = UserDataClassRoom(
                first_Name.text.toString().trim(),
                Last_Name.text.toString(),
                email.text.toString()
            )

            /* if (user.toString().trim().isNotEmpty()) {
                Toast.makeText(this, "Fields are empty", Toast.LENGTH_SHORT).show()
                } */
            db.userDao().insertAll(user)


            val intent = Intent(this, MainActivity::class.java)
            startActivity(intent)
        }
    }
}

【问题讨论】:

  • 在 Toast 后面加上 return 语句。
  • 但我还是很好奇为什么用if (user.toString().trim().isNotEmpty())而不是trim().isEmpty
  • 您还没有添加 else 语句。要么添加 else 语句并指定要执行的操作,要么添加 return 语句。
  • 当我在 textfields 中输入一些数据时,它仍然说字段是空的,我也用 else 语句尝试过
  • 发布您的更新代码。

标签: android kotlin android-recyclerview android-room


【解决方案1】:

您的 if 语句错误,它检查值是否不为空而不是为空,您需要将 isNotEmpty() 更改为 isEmpty() 为:

    if (user.toString().trim().isEmpty()) {
        Toast.makeText(this, "Fields are empty", Toast.LENGTH_SHORT).show()
        // return No need if you specify else
    }
   else{
       db.userDao().insertAll(user)
       val intent = Intent(this, MainActivity::class.java)
       startActivity(intent)
   }

【讨论】:

  • 它不起作用,它仍然在用空字段制作 textViews,现在我的代码是:if (user.toString().trim().isEmpty()) { Toast.makeText(this, "Fields are empty", Toast.LENGTH_SHORT).show() // return@setOnClickListener } else { db.userDao().insertAll(user) val intent = Intent(this, MainActivity::class.java) startActivity(intent) }
  • 这意味着 user.toString() 是一个错误的值来检查并且它总是不为空,我不知道你是否覆盖了 toString () 在 User.java 中与否。如果您没有覆盖它,那么是时候执行它了,或者您可以单独检查每个值: if(firstName.isEmpty() || lastName.isEmpty() || ..){ toast...} else {.. 代码在这里}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 2018-11-24
  • 1970-01-01
相关资源
最近更新 更多