Firebase添加表单应用崩溃:Btnsimpan未初始化
问题解决:lateinit property Btnsimpan未初始化导致崩溃
错误原因
你遇到的kotlin.UninitializedPropertyAccessException是因为你声明了lateinit var Btnsimpan: Button,但在调用Btnsimpan.setOnClickListener之前,没有对这个变量进行初始化——也就是没通过findViewById绑定布局里的按钮控件。
解决步骤
初始化Btnsimpan变量
在onCreate方法里,和初始化其他EditText的代码一样,添加一行绑定按钮的代码:Btnsimpan = findViewById(R.id.Btnsimpan)注意要和你布局文件
activity_add.xml里按钮的id完全一致,包括大小写(Android的控件id是区分大小写的)。检查布局文件的控件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
相关产品推荐
相关产品推荐

