2016-12-05 17 views
1

私は、Androidアプリケーションを開発中で、ローカルのSQLiteデータベースに保存して、Firebaseと同期したいと思っています。Firebaseの同期機能が働いています。ローカルデータベース、アプリケーションをクリックするとクラッシュしますが、データはfirebaseに保存されますが、ローカルのSQLiteには保存されません。誰かが助けることができるなら私のコードを以下に含めました。アンドロイドでローカルデータベースと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)Firebaseオフライン機能を使用して考えがあります...あなたはどのような問題を抱えているん

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

+0

クライアントからローカルデータベースを取得するための要件 – Pooveshin

+0

私は好奇心が強いのですがそれは必要ですか?私にとって、これはFirebaseの本当に素晴らしい機能の1つです。データを取得すると、それはローカルに保存され、そのデータに対して行った後続のクエリはネットワークを経由する必要はありません。 –

関連する問題