我是Firebase的新手.我已经做了一个简单的项目,发送用户字符串到Firebase的实时数据库.对于输入,我使用了EditText视图.以下是我的主要活动.用户名是EditText视图的ID

package com.example.firebase
import...

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    private lateinit var database: DatabaseReference
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        binding.Remote.setOnClickListener {


            val name = binding.username.text.toString() //Error on this line
            database = FirebaseDatabase.getInstance().getReference("Users")
            val User = User(name)
            database.child(name).setValue(User).addOnSuccessListener {
                binding.username.text.clear() //And This Line
                Toast.makeText(this,"Sucess", Toast.LENGTH_SHORT).show()
            }.addOnFailureListener {
                Toast.makeText(this,"Failed", Toast.LENGTH_SHORT).show()
            }
        }

生成后,注释代码行上显示以下错误:

对于类型为EditText的可为空的接收器,只允许安全的(?.)或非空的断言(!!.)调用.

如果我直接输入一个字符串,而不是使用EditText View,它可以很好地工作.有没有人能帮我一下?

推荐答案

看起来您的usernameEditText对象为空.因此,有两种方法可以解决这个问题:

  1. 使用安全呼叫(?.)

     val name = binding.username?.text.toString()
     //                         ?
    
  2. 使用非空的断言(!!.)

     val name = binding.username!!.text.toString()
     //                         ?
    

请参阅Kotlin文档中有关null safety的更多信息.

Android相关问答推荐

Android可组合继承?

如何在Jetpack composeH中创建具有弯曲末端的六边形形状

Android Gradle/Groovy,如何将文件复制到APK

Android库中的kotlinCompilerExtensionVersion

如何使可拖动内容停留在可组合框的边界内

可组合:don';t剪辑视图

安卓Azure通讯聊天UI库导入?

如何正确创建可拖动的浮动视图?

Gradle在我的Android Compose项目中继续推广依赖版本

Android - 如何使 TextInputEditText 的高度恰好为 2 行?

通知使用默认语言,屏幕显示多种语言,同时通过 AppCompatDelegate 设置应用程序语言

列表更改时,RecyclerView 中的列表不会更新

将 CircularProgressIndicator 添加到按钮而不增加其高度

根据另一个数组的值对数组进行排序

如何以编程方式通过 whatsapp android 共享图像和文本

如何在 React Native 下载文件之前打开文件管理器并 Select 一个目录

在 Jetpack Compose 中包装内容

TextField 溢出和软包装不适用于 Compose 约束布局

我可以在不解密的情况下使用 JSch 获取加密的 SSH 私钥的类型或 fingerprint 吗?

compose :为什么以记住启动的列表触发方式与快照不同