2016-12-05 4 views
1

Ich bin Entwickler und Android App und möchte in einer lokalen SQLite-Datenbank speichern und will es dann mit Firebase synchronisieren, habe ich die Firebase-Synchronisierung funktioniert Ich habe nur das Problem zu speichern Bei der lokalen Datenbank stürzt die App ab, wenn ich auf "Speichern" klicke, aber die Daten werden in Firebase, aber nicht in der lokalen SQLite gespeichert. Ich habe meinen Code unten eingefügt, wenn jemand helfen kann.Speichern in der lokalen Datenbank und Firebase in Android

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

      //Getting values to store 
      String name = editTextName.getText().toString().trim(); 
      String address = editTextAddress.getText().toString().trim(); 
      String venue = editVenue.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.setVenue(venue); 
      person.setDateTime(DateTime); 

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

      //Write to local SQL database 
      boolean isInserted = DB.SaveUserMeetings(editTextName.getText().toString(), 
        editDateTime.getText().toString(), 
        editVenue.getText().toString(), 
        editTextAddress.getText().toString()); 
      if (isInserted == true) 
       Toast.makeText(Capture_Meetings.this, "Data Not Saved", Toast.LENGTH_SHORT).show(); 
      else 
       Toast.makeText(Capture_Meetings.this, "Data Saved", Toast.LENGTH_SHORT).show(); 


      //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 = "Name of School: " + person.getName() + "\n Date:" + person.getDateTime() + "\n Venue:" + person.getVenue() + "\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()); 
       } 
      }); 

     } 
    }); 
} 

Meine Fehlerprotokoll

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.pooveshin.saica_sgb, PID: 10770 
       java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.example.pooveshin.saica_sgb.DatabaseHelper.SaveUserMeetings(java.lang.String, java.lang.String, java.lang.String, java.lang.String)' on a null object reference 
        at com.example.pooveshin.saica_sgb.Capture_Meetings$3.onClick(Capture_Meetings.java:114) 
        at android.view.View.performClick(View.java:4780) 
        at android.view.View$PerformClick.run(View.java:19866) 
        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) 
+0

Welches Problem folgenden Aufruf haben Sie? Ohne eine klare Frage ist es unwahrscheinlich, dass jemand hilft. –

+0

@FrankvanPuffelen wenn ich versuche, die Daten zu speichern, wird in Firebase geschrieben, aber es stürzt ab, wenn es versucht, in der lokalen Datenbank zu speichern. – Pooveshin

+0

Es sieht so aus, als ob Sie 'SaveUserMeetings' für ein' null' Objekt aufrufen wollen: 'DB.SaveUserMeetings (...)'. Siehe http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-fix-it –

Antwort

0

Haben Sie Firebase Offline-Fähigkeiten als mit (https://firebase.google.com/docs/database/android/offline-capabilities) ... aktiviert durch

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

+0

Es ist eine Anforderung vom Client, eine lokale Datenbank zu haben – Pooveshin

+0

Ich bin neugierig, warum das ist nötig? Für mich ist dies eine der wirklich guten Möglichkeiten von Firebase ... sobald ich Daten abrufe, werden sie lokal gespeichert und alle nachfolgenden Abfragen, die ich für diese Daten mache, müssen nicht über das Netzwerk gehen. –

Verwandte Themen