Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“我被困在这里了”;Can';t转换类型为java.lang.String的对象";_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

“我被困在这里了”;Can';t转换类型为java.lang.String的对象";

“我被困在这里了”;Can';t转换类型为java.lang.String的对象";,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我是Firebase的新手,我正在尝试用Android Studio创建文件操作,我遇到了这个错误 我的错误代码 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.ptpai.rekamedik, PID: 28972 com.google.firebase.database.DatabaseException: Can't convert object of type

我是Firebase的新手,我正在尝试用Android Studio创建文件操作,我遇到了这个错误

我的错误代码

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.ptpai.rekamedik, PID: 28972
                  com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type Model.EditHasilLabModel
                      at com.google.android.gms.internal.zzelw.zzb(Unknown Source)
                      at com.google.android.gms.internal.zzelw.zza(Unknown Source)
                      at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
                      at com.ptpai.rekamedik.HasilLab$1.onDataChange(HasilLab.java:69)
                      at com.google.android.gms.internal.zzegf.zza(Unknown Source)
                      at com.google.android.gms.internal.zzeia.zzbyc(Unknown Source)
                      at com.google.android.gms.internal.zzeig.run(Unknown Source)
                      at android.os.Handler.handleCallback(Handler.java:751)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:154)
                      at android.app.ActivityThread.main(ActivityThread.java:6776)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
HasilLab.java

package com.ptpai.rekamedik;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.widget.ListView;
导入com.google.firebase.auth.FirebaseAuth;
导入com.google.firebase.auth.FirebaseUser;
导入com.google.firebase.database.DataSnapshot;
导入com.google.firebase.database.DatabaseError;
导入com.google.firebase.database.DatabaseReference;
导入com.google.firebase.database.FirebaseDatabase;
导入com.google.firebase.database.ValueEventListener;
导入java.util.ArrayList;
导入java.util.List;
导入Helper.HasilLabAdapter;
导入Model.EditHasilLabModel;
公共类HasilLab扩展了AppCompative活动{
FirebaseAuth mAuth,otentikasi;
FirebaseDatabase mFirebaseDatabase;
列表视图列表视图;
名单;
进行对话进行对话;
HasilLabAdapter适配器;
数据库参考数据库参考;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hasil_lab);
mAuth=FirebaseAuth.getInstance();
mFirebaseDatabase=FirebaseDatabase.getInstance();
FirebaseUser=mAuth.getCurrentUser();
//Inisialissasi Objek Otentikasi火场
Otenitikasi=FirebaseAuth.getInstance();
//Cek jika用户sudah memiliki登录
if(otentikasi.getCurrentUser()==null){
//阿基里塞西
完成();
//Alihkan Ke登录
startActivity(新意图(this,Masuk.class));
}
listView=(listView)findViewById(R.id.list1);
列表=新的ArrayList();
progressDialog=新建progressDialog(此);
progressDialog.setTitle(“Sedang Memuat…”);
progressDialog.show();
databaseReference=FirebaseDatabase.getInstance().getReference(“用户”).child(User.getUid()).child(“HasilLab”);
databaseReference.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
progressDialog.disclose();
list.clear();
对于(DataSnapshot快照:DataSnapshot.getChildren()){
EditHasilLabModel EditHasilLabModel=snap.getValue(EditHasilLabModel.class);
添加(EditHasilLabModel);
}
Adapter=new HasilLabAdapter(HasilLab.this,R.layout.hasil\u lab\u data\u items,list);
setAdapter(适配器);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}

}
要使其正常工作,请使用以下代码:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference hasilRef = rootRef.child("User").child(uid).child("HasilLab");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String imageUri = dataSnapshot.child("imageUri").getValue(String.class);
        String keterangan = dataSnapshot.child("keterangan_HasileLab").getValue(String.class);
        String nama = dataSnapshot.child("nama_Hasil_Lab").getValue(String.class);
        Log.d("TAG", imageUri + " / " + keterangan + " / " + nama);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
hasilRef.addListenerForSingleValueEvent(valueEventListener);

无需使用
getChildren()
方法。

请添加您的数据库结构。这是我的数据库结构。感谢AdvanceNo,添加数据库结构,而不是链接它。意思是将其添加到问题中。已经在问题中添加了数据库结构:)为什么要使用字符串而不是
EditHasilLabModel
?@AndréKool以确保OP可以从数据库中获得结果。看看他的模型课是什么样子?字段名称不正确,只有一个正确,
imageUri
。Firebase在反序列化时总是查找类似的字段。此字段
Nama\u Hasil\u Lab
应命名为:
namaHasilLab
,并且共同响应的getter:
getNamaHasilLab()
。这就是我使用String类的原因。感谢您的帮助,但是当我尝试代码时,活动总是在加载并且从不打开。这行代码返回什么
Log.d(“TAG”,imageUri+“/”+keterangan+“/”+nama)?太好了。初始问题(
“无法转换java.lang.String类型的对象”
)已解决。您的活动没有开始的事实肯定是由另一个问题引起的。这基本上是另一个问题。为了遵守这个社区的规则,请发布另一个新的问题,这样我和其他用户可以帮助你。如果你认为我的回答对你有帮助(对于最初的问题),请考虑接受并投票表决。谢谢