0

私はそのような枝を使用してデータベースを作ってるんだ: enter image description hereデータのカスタムブランチをFirebaseにプッシュするには?

私はFirebaseにプッシュするコードを使用します。

mDatabaseReference.child(Constant.CHILD_CHATONETOONE + "/" + hostUid + "/" + clientUid).push().setValue(new Message("Hi guy"), new DatabaseReference.CompletionListener() { 
    @Override 
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
     if(databaseError!= null) 
       Toast.makeText(MainActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show(); 
    } 
}); 

しかし、私はこのコードを使用するときに、私のアプリが動作を停止します。 Firebaseがデータベースの新しい支店を利用する私の方法を受け入れなかったようです。 logcatインサイド

10-15 11:46:16.720 3590-3590/com.team2_dtui.heyfriend_v2 E/AndroidRuntime: FATAL EXCEPTION: main 

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.team2_dtui.heyfriend_v2/com.team2_dtui.heyfriend_v2.activity.MainActivity}: java.lang.NullPointerException 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                       at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                       at android.os.Handler.dispatchMessage(Handler.java:99) 
                       at android.os.Looper.loop(Looper.java:137) 
                       at android.app.ActivityThread.main(ActivityThread.java:4745) 
                       at java.lang.reflect.Method.invokeNative(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:511) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                       at dalvik.system.NativeStart.main(Native Method) 
                      Caused by: java.lang.NullPointerException 
                       at com.team2_dtui.heyfriend_v2.activity.MainActivity.onCreate(MainActivity.java:43) 
                       at android.app.Activity.performCreate(Activity.java:5008) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)  
                       at android.app.ActivityThread.access$600(ActivityThread.java:130)  
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)  
                       at android.os.Handler.dispatchMessage(Handler.java:99)  
                       at android.os.Looper.loop(Looper.java:137)  
                       at android.app.ActivityThread.main(ActivityThread.java:4745)  
                       at java.lang.reflect.Method.invokeNative(Native Method)  
                       at java.lang.reflect.Method.invoke(Method.java:511)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
                       at dalvik.system.NativeStart.main(Native Method)  

:ここでlogcatであるcom.team2_dtui.heyfriend_v2.activity.MainActivity.onCreate(MainActivity.java:43は、私は上記の与えたコードです。

私は一人の子供にこのコードを変更すると、それが正常に動作します:

mDatabaseReference.child(Constant.CHILD_CHATONETOONE).push().setValue(new Message("Hi guy"), new DatabaseReference.CompletionListener() { 
     @Override 
     public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
      if(databaseError!= null) 
       Toast.makeText(MainActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    }); 

私は問題を把握することができます。初めてこのブランチを作成するにはどうすればよいですか?助けて。私はFirebase初心者です。

+0

アプリのログキャッチは止まっていますか? –

+0

私の質問でlogcatを更新しました。 logcatは、このコードに問題があることを示しました。 –

+0

Firebaseコンソールを使用して、jsonファイルとしてインポートすることができます(1回だけの場合)。 –

答えて

0

これは、約null変数です。そして、firebaseコードは正常に動作します。でも、ありがとう。

1

のみsetValue機能はあなたのために仕事をすることができます。参照されたノードに移動し、そのノードに関数setValueを呼び出すと、そのノードに自動的に分岐が作成されます。したがって、push関数呼び出しを削除する必要があります。

他の事はdatabaseErrorフィールドがnullであるかどうかを確認することです。データを保存するためのFirebaseのマニュアルはadding a completion listenerです。ドキュメントに記載されている例のように、nullのフィールドがdatabaseErrorであるかどうかを確認する必要があります。

コードは次のようになります。

mDatabaseReference.child(Constant.CHILD_CHATONETOONE + "/" + hostUid + "/" + clientUid).setValue(new Message("Hi guy"), new DatabaseReference.CompletionListener() { 
    @Override 
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
     if(databaseError != null) 
      Toast.makeText(MainActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show(); 
     else 
      Toast.makeText(MainActivity.this, "Data saved successfully", Toast.LENGTH_LONG).show(); 

    } 
}); 
+0

をuに感謝するが、私は、各メッセージのUIDを自動的に生成firebaseたいを入れたときに、それはちょうどので、私は、私はそれを作ることができるか。プッシュ()メソッドを使用する必要があります。問題がある?私が見 –

+0

。次に、あなただけに必要成功したデータ保存のために、それは '上記の例のようにnull'なのでを返しますので、私はuが言ったことを試みるが、エラーがまだデータ設計に問題がある場合、私は疑問に思う:( –

+0

。。' databaseError'フィールドを確認してください。私はチャットを置く必要がありますユーザーフィールドにフィールド? –

関連する問題