You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase添加表单应用崩溃:Btnsimpan未初始化

问题解决:lateinit property Btnsimpan未初始化导致崩溃

错误原因

你遇到的kotlin.UninitializedPropertyAccessException是因为你声明了lateinit var Btnsimpan: Button,但在调用Btnsimpan.setOnClickListener之前,没有对这个变量进行初始化——也就是没通过findViewById绑定布局里的按钮控件。

解决步骤

  1. 初始化Btnsimpan变量
    在onCreate方法里,和初始化其他EditText的代码一样,添加一行绑定按钮的代码:

    Btnsimpan = findViewById(R.id.Btnsimpan)
    

    注意要和你布局文件activity_add.xml里按钮的id完全一致,包括大小写(Android的控件id是区分大小写的)。

  2. 检查布局文件的控件id
    确认activity_add.xml里确实存在一个id为Btnsimpan的Button控件,比如:

    <Button
        android:id="@+id/Btnsimpan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Simpan"/>
    

修改后的完整代码

package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import com.google.firebase.database.DatabaseReference
import com.google.firebase.database.FirebaseDatabase

class activity_add : AppCompatActivity() {
    private lateinit var Etbarang: EditText
    private lateinit var Etkegiatan: EditText
    private lateinit var Etbagian: EditText
    private lateinit var Btnsimpan: Button
    private lateinit var dbref : DatabaseReference
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_add)

        Etbagian = findViewById(R.id.Etbagian)
        Etkegiatan = findViewById(R.id.Etkegiatan)
        Etbarang = findViewById(R.id.Etbarang)
        // 添加这行初始化代码
        Btnsimpan = findViewById(R.id.Btnsimpan)

        dbref = FirebaseDatabase.getInstance().getReference("aktivitas")

        Btnsimpan.setOnClickListener{
            savedata()
        }
    }

    private fun savedata() {
        val bagian = Etbagian.text.toString()
        val keterangan = Etkegiatan.text.toString()
        val barang = Etbarang.text.toString()

        if (barang.isEmpty()){
            Etbarang.error = "masukan nama barang"
            return
        }
        if (bagian.isEmpty()){
            Etbagian.error = "masukan nama bagian"
            return
        }
        if (keterangan.isEmpty()){
            Etkegiatan.error = "Masukan kegiatan"
            return
        }
        val empid = dbref.push().key!!
        val add = add_kegiatan(empid,bagian,barang,keterangan)

        dbref.child(empid).setValue(add).addOnCompleteListener{
            Toast.makeText(this, "Data Berhasil di tambahkan", Toast.LENGTH_SHORT).show()
        }.addOnFailureListener{ err->
            Toast.makeText(this,"error", Toast.LENGTH_SHORT).show()
        }
    }
}

内容的提问来源于stack exchange,提问作者daffa firmansyah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:30:21