使用Kotlin在Firestore数据库中上传数据。无法存储数据

时间:2018-03-20 20:53:49

标签: android firebase kotlin google-cloud-firestore

我不知道问题是什么,但Edittext中的字符串没有存储在我的Firestore数据库中。请帮助我是Firestore和kotlin的新手

  

MainActivity.java

class MainActivity : AppCompatActivity() {

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

    val mFirestore: FirebaseFirestore = FirebaseFirestore.getInstance()

    val name = findViewById<EditText>(R.id.nameText)//nameText.text.toString()
    val user = findViewById<EditText>(R.id.userText)
    val occ = "Student"

    val usermap = HashMap<String, Any>()
    usermap.put("Name", name.text.toString())
    usermap.put("Occupation", occ)
    usermap.put("Type", user.text.toString())

    button.setOnClickListener() {

        mFirestore.collection("Users").add(usermap).addOnSuccessListener() {
            Toast.makeText(this, "Data Stored", Toast.LENGTH_SHORT).show()
        }.addOnFailureListener() {
            Toast.makeText(this, "Data Not Stored", Toast.LENGTH_SHORT).show()
        }
    }
}
}

这是我的firestore数据库截图,请检查并帮助我

Image

1 个答案:

答案 0 :(得分:1)

您在创建EditText时立即(且仅一次)读取其中的值 - 此时它们仍然是空的。相反,每次都在侦听器的回调中读取它们的值,如下所示:

button.setOnClickListener() {
    val usermap = HashMap<String, Any>()
    usermap.put("Name", name.text.toString())
    usermap.put("Occupation", occ)
    usermap.put("Type", user.text.toString())

    mFirestore.collection("Users").add(usermap).addOnSuccessListener() {
        Toast.makeText(this, "Data Stored", Toast.LENGTH_SHORT).show()
    }.addOnFailureListener() {
        Toast.makeText(this, "Data Not Stored", Toast.LENGTH_SHORT).show()
    }
}
相关问题