मैं Firebase का उपयोग कर रहा हूं, और मैं अपने Android ऐप के माध्यम से Firebase के डेटा को दिखाने की कोशिश कर रहा हूं। फिर भी, जब मैं ऐप चलाता हूं, तो यह क्रैश हो जाता है और लॉगकैट कहता है "टाइप करने में विफल रहा"। मैंने जावा क्लास में JSON संरचना के गुणों की नकल की।

Firebase data

यहाँ मुख्यता है:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Firebase.setAndroidContext(this);
    Firebase ref = new Firebase("https://fbandg.firebaseio.com/");
    android.R.layout.simple_list_item_1, android.R.id.text1);
    final TextView textbox = (TextView) findViewById(R.id.textbox);
    Firebase.setAndroidContext(this);
    ValueEventListener newCon = ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            fObject obj = dataSnapshot.getValue(fObject.class); //Line 49
            textbox.setText(obj.toString());
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

यहाँ जावा वर्ग मैंने बनाया है:

public class fObject
{
    String newCond;
    public String getCondition()
    {
        return newCond;
    }
}

निर्मित त्रुटियाँ निम्नलिखित हैं:

firebase.client.DataSnapshot.getValue(DataSnapshot.java:183)
com.example.elish_000.myfirstapp.MainActivity$1.onDataChange(MainActivity.java:49)
0
elishaolade 14 नवम्बर 2015, 09:42

2 जवाब

सबसे बढ़िया उत्तर

इसे इस्तेमाल करे,

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Firebase.setAndroidContext(this);
Firebase ref = new Firebase("https://fbandg.firebaseio.com");
final TextView textbox = (TextView) findViewById(R.id.textbox);
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        fObject fobject = new fObject();
        fobject.setNewCondition(dataSnapshot.child("condition").getValue().toString());
        textbox.setText(fobject.getNewCondition());
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});

अपने fObject वर्ग को संशोधित करें,

public class fObject
{
    String newCond;
    public String getNewCond()
    {
        return newCond;
    }

    public void setNewCond(String cond)
    {
        newCond = cond;
    }
}
1
Parag Kadam 15 नवम्बर 2015, 11:41

फायरबेस के JSON-to-Java मैपर खेतों को मैप करने के तरीके को निर्धारित करने के लिए जावाबीन पैटर्न का उपयोग करता है। एक क्लास के लिए एक वैध जावाबिन होने के लिए, फ़ील्ड नाम और गेट्टर / सेटर का मिलान करना होगा।

अपनी कक्षा को काम करने के लिए, इसे इसमें बदलें:

public class fObject
{
    String newCond;
    public String getNewCond()
    {
        return newCond;
    }
}

फिर आप इसे DataSnapshot से पढ़ सकते हैं:

fObject obj = dataSnapshot.getValue(fObject.class);

मैंने इसे कुछ समय पहले बड़े पैमाने पर कवर किया है: जब मैं JSON को Firebase से Java ऑब्जेक्ट्स में बदलूं?" आपको शायद वह भी पढ़ना चाहिए।

1
Community 23 मई 2017, 12:15