使用Kotlin从Android App向Firebase写入数据时出现“无效密钥”

问题描述 投票:-1回答:3

我正在尝试使用此代码从我的Android应用程序向Firebase写入数据.. package com.example.envir.databasetesting

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import com.google.firebase.database.FirebaseDatabase
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {


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

        val mdatabase = FirebaseDatabase.getInstance().reference
        val name = name_txt.text.toString().trim()
        val email = email_txt.text.toString().trim()


        var myMap = hashMapOf<String, String>()


        save_bu.setOnClickListener{

            myMap.put(name,email)

            mdatabase.push().setValue(myMap)




        }




    }

}

我一直收到此错误消息:

E / AndroidRuntime:FATAL EXCEPTION:main进程:com.example.envir.databasetesting,PID:28042 com.google.firebase.database.DatabaseException:无效的密钥:。密钥不得包含'/','。','#','$','['或']'

我需要添加密钥吗?我以为它默认会为我添加一个键?

谢谢您的帮助。

android firebase firebase-realtime-database kotlin
3个回答
1
投票

解决了...

不得不将val移动到按钮监听器中......

save_bu.setOnClickListener{
            val name = name_txt.text.toString().trim()
            val email = email_txt.text.toString().trim()
            myMap.put("name", name)
            myMap.put("email",email)

            mdatabase.push().setValue(myMap)

0
投票

该错误可能是指您的name val的内容。检查其内容并确保其中不包含任何禁止值。

通常,使用数据库键时,不要使用用户可能输入的任意值。仅使用您已确定为某个位置存储的数据构成架构的值。所以,如果你的地图看起来像这样,你会做得更好:

myMap.put("name", name)
myMap.put("email", email)

0
投票

当我这样做时,我发现错误已修复...

我更改了这段代码.... save_bu.setOnClickListener {

        myMap.put(name,email)

        mdatabase.push().setValue(myMap)

对...

save_bu.setOnClickListener {

        myMap.put("name", name)
        myMap.put("email",email)

        mdatabase.push().setValue(myMap)

现在我的问题是它没有保存我实际在那些编辑文本字段中键入的数据。大声笑

© www.soinside.com 2019 - 2024. All rights reserved.