2016-12-05 88 views
1

我正在開發和Android應用程序,並希望保存到本地SQLite數據庫,然後希望它與Firebase同步,我已經獲得Firebase同步工作我只有保存問題本地數據庫,當我點擊保存時,應用程序崩潰,但數據存儲在firebase中,但不在本地SQLite中。如果有人能提供幫助,我在下面列出了我的代碼。保存到本地數據庫和Android中的Firebase

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()); 
       } 
      }); 

     } 
    }); 
} 

我的錯誤日誌

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

你有什麼問題,啓用?沒有一個明確的問題,有人不大可能會提供幫助。 –

+0

@FrankvanPuffelen當我嘗試保存數據時將其寫入firebase,但當它嘗試保存到本地數據庫時會崩潰。 – Pooveshin

+0

看起來你試圖在'null'對象上調用'SaveUserMeetings':'DB.SaveUserMeetings(...)'。請參閱http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it –

回答

0

你有沒有使用火力地堡離線功能考慮(https://firebase.google.com/docs/database/android/offline-capabilities)......通過調用以下

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

+0

它從客戶端的要求有一個本地數據庫 – Pooveshin

+0

我很好奇爲什麼這是必要的?對我來說,這是Firebase非常好的功能之一...一旦我檢索到數據,它就會存儲在本地,我爲這些數據做出的任何後續查詢都不需要經過網絡。 –

相關問題