简体   繁体   English

尝试从Firebase获取数据时Android应用程序崩溃

[英]Android app crashing when trying to get data from Firebase

I am developing an Android app and have integrated Firebase into it. 我正在开发一个Android应用,并将Firebase集成到其中。 The connection is successful and writing to Firebase is not a problem, when the app tries to receive the data to display in the app, the app crashes. 连接成功,并且写入Firebase没问题,当应用程序尝试接收要显示在应用程序中的数据时,应用程序崩溃。 I have added my code below if anyone can help. 如果有人可以帮助,我已在下面添加了我的代码。

Capture_Meetings.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.firebase.client.DataSnapshot;
import com.firebase.client.Firebase;
import com.firebase.client.FirebaseError;
import com.firebase.client.ValueEventListener;

public class Capture_Meetings extends AppCompatActivity {

private EditText editTextName;
private EditText editTextAddress;
private EditText editDateTime;
private TextView textViewPersons;
private Button buttonSave;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_capture__meetings);

    Firebase.setAndroidContext(this);

    buttonSave = (Button) findViewById(R.id.buttonSave);
    editTextName = (EditText) findViewById(R.id.editTextName);
    editTextAddress = (EditText) findViewById(R.id.editTextAddress);
    editDateTime = (EditText) findViewById(R.id.editDateTime);

    textViewPersons = (TextView) findViewById(R.id.textViewPersons);

    buttonSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Creating firebase object
            Firebase ref = new Firebase(Config.FIREBASE_URL);

            //Getting values to store
            String name = editTextName.getText().toString().trim();
            String address = editTextAddress.getText().toString().trim();
            String DateTime = editDateTime.getText().toString().trim();

            //Creating Person object
            final MeetingUser person = new MeetingUser();

            //Adding values
            person.setName(name);
            person.setAddress(address);
            person.setDateTime(DateTime);

            //Storing values to firebase
            ref.child("Person").push().setValue(person);


            //Value event listener for realtime data update
            ref.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot snapshot)
                {
                    for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                        //Getting the data from snapshot
                        MeetingUser person = postSnapshot.getValue(MeetingUser.class);

                        //Adding it to a string
                        String string = "\n Name of School: "+person.getName()+"\n Date and Time:"+ person.getDateTime()+"\nMeeting Notes: "+person.getAddress()+"\n\n";

                        //Displaying it on textview
                        textViewPersons.setText(string);
                    }
                }

                @Override
                public void onCancelled(FirebaseError firebaseError) {
                    System.out.println("The read failed: " + firebaseError.getMessage());
                }
            });

        }
    });
}
}

MeetingUser.java - constructor MeetingUser.java构造函数

public class MeetingUser {
//name and address string
private String Key;
private String name;
private String address;
private String DateTime;

public MeetingUser() {
  /*Blank default constructor essential for Firebase*/
}
//Getters and setters
public String getKey ()
{
    return Key;
}

public void setKey (String Key)
{
    this.Key = Key;
}
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

public String getDateTime()
{
    return DateTime;
}

public void setDateTime (String DateTime)
{
    this.DateTime = DateTime;
}
}

Crash Log : 崩溃日志:

com.firebase.client.FirebaseException: Failed to bounce to type
                      at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:185)
                      at com.example.pooveshin.saica_sgb.Capture_Meetings$1$1.onDataChange(Capture_Meetings.java:67)
                      at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45)
                      at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)
                      at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38)
                      at android.os.Handler.handleCallback(Handler.java:739)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:135)
                      at android.app.ActivityThread.main(ActivityThread.java:5254)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
                   Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "-KVZjE7GFxVENXAnemZF" (class com.example.pooveshin.saica_sgb.MeetingUser), not marked as ignorable (4 known properties: , "name", "dateTime", "address", "key"])
                      at [Source: java.io.StringReader@20f5d5e1; line: 1, column: 26] (through reference chain: com.example.pooveshin.saica_sgb.MeetingUser["-KVZjE7GFxVENXAnemZF"])
                      at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:555)
                      at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:708)
                      at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1160)
                      at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:315)
                      at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
                      at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
                      at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)
                      at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183)
                      at com.example.pooveshin.saica_sgb.Capture_Meetings$1$1.onDataChange(Capture_Meetings.java:67) 
                      at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45) 
                      at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 
                      at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:135) 
                      at android.app.ActivityThread.main(ActivityThread.java:5254) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at java.lang.reflect.Method.invoke(Method.java:372) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

Have a look at this : 看看这个:

public void setKey (String Key)
{
    this.Key = Key;
}

When it gets deserialized Jackson assumes that the field is key but instead you wrote it as Key thus, it cannot be map to the object's field. 反序列化后, Jackson会假定该字段为key但是您将其写为Key ,因此无法将其映射到对象的字段。

Change private String Key to private String key , the same with the DateTime , use lowercase fields if possible. private String Key更改为private String key ,与DateTime相同,如果可能,请使用小写字段。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android:尝试将API中的数据加载到列表视图时应用崩溃 - Android: App crashing when trying to load Data from API into a listview 尝试从文件读取数据时,Android应用不断崩溃 - Android app keeps crashing when trying to read data from file Android:尝试将已保存的位图数据加载到Canvas时,Android应用程序崩溃 - Android: Android app crashing when trying to load saved Bitmap data to Canvas 显示Firebase数据库条目时Android应用程序崩溃 - Android app crashing when displaying firebase database entries 尝试使用ASyncTask发出GET请求时,如何防止我的应用程序崩溃? - How can I stop my app from crashing when trying to make a GET request with an ASyncTask? 尝试在 android 5.0 上使用 RecyclerView 时应用程序崩溃 - App crashing when trying to use RecyclerView on android 5.0 尝试在单击按钮时打开pdf时崩溃的Android应用 - Crashing Android app when trying to open a pdf on button click Android Studio Java 应用程序在尝试更新 TextView 时崩溃 - Android Studio Java app crashing when trying to update TextView 从Firebase检索图像时,Android应用会使用大量数据 - Android app uses a lot of data when retrieving images from firebase 从 firebase 检索数据时,在 android App 中获取 null 值 - Getting null value in android App when data is retrieve from firebase
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM