【发布时间】:2022-01-06 11:37:04
【问题描述】:
package com.pradeephr.firebasedemo;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.pradeephr.firebasedemo.model.Person;
public class MainActivity extends AppCompatActivity {
private EditText editText;
private EditText editText1;
private TextView textView;
private Button buttonSend;
private Button buttonRead;
private FirebaseDatabase mDatabase;
private DatabaseReference mRef;
private ChildEventListener mchildEventListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
mDatabase=FirebaseDatabase.getInstance();
mRef=mDatabase.getReference("user");
this.buttonSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendData();
}
});
this.buttonRead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
readData();
}
});
mchildEventListener=new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
Person p=snapshot.getValue(Person.class);
Log.d("TAG",p.getName()+" "+p.getAge());
}
@Override
public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot snapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
};
mRef.addChildEventListener(mchildEventListener);
}
private void sendData(){
String dataName=editText.getText().toString();
int dataAge=Integer.parseInt(editText1.getText().toString());
String key=mRef.push().getKey();
// when class is present in package
Person person=new Person(dataAge,dataName);
assert key != null;
mRef.child(key).setValue(person);
Toast.makeText(MainActivity.this,"Data inserted...",Toast.LENGTH_SHORT).show();
}
private void readData(){
}
private void initViews() {
editText=findViewById(R.id.editTextName);
textView=findViewById(R.id.text);
buttonSend=findViewById(R.id.btn_send);
buttonRead=findViewById(R.id.btn_read);
editText1=findViewById(R.id.editTextAge);
}
}
我正在尝试在我的代码中添加一个 childEventListener,并且我正在从 FirebaseDatabase 对“用户”进行 mRef 引用。
创建新用户后,立即从 childEventListener 调用 onChildAdded 方法,并将获取的数据登录到 logcat。
我正在向 Firebase 添加人名(字符串)和年龄(整数)。 但是在从 firebase 检索数据时,我遇到了这个错误。
【问题讨论】:
-
请将错误和代码都显示为文本而不是屏幕截图。从根本上看,问题在于您的条目将
age设置为“20”而不是 20...您可以修复数据以使其实际上与您的课程相匹配吗?
标签: java android firebase firebase-realtime-database google-cloud-platform