2017-08-01 6 views
-4

私はuid(写真の下線付き)をコピーして、それを現在のユーザーのuidと比較したいと思っています。そして、同じuidの下にデータがない場合にのみ、データベースに書き込むようにしてください。これは、各ユーザーが1回だけデータをアップロードできるようにするためです。あなたがこのコード行に変更する必要がfirebaseデータベースのこのコードで何が問題になっていますか?

Link to the database screenshot

buttonSubmit.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     if (mDatabaseReference.child("drivers").child(userid).toString() != userid || mDatabaseReference.child("parents").child(userid).toString() != useremail) { 
      if (!radiobutton1.isChecked() && !radiobutton2.isChecked()) { 
       Toast.makeText(LoggedinActivity.this, "Please select either Driver or Parent", Toast.LENGTH_LONG).show(); 
      } else if (radiogroup.getCheckedRadioButtonId() == radiobutton1.getId()) { 
       typestring = "driver"; 
       Users users = new Users(useremail, editText.getText().toString(), typestring); 
       mDatabaseReference.child("drivers").child(userid).setValue(users); 
      } else if (radiogroup.getCheckedRadioButtonId() == radiobutton2.getId()) { 
       typestring = "parent"; 
       Users users = new Users(useremail, editText.getText().toString(), typestring); 
       mDatabaseReference.child("parents").child(userid).setValue(users); 
      } 
     } 
     else { 
      Toast.makeText(LoggedinActivity.this, "Information already submitted", Toast.LENGTH_LONG).show(); 
     }  
    } 
}); 
+3

このコードで何が問題になっていますか? –

+1

あなたはあなたの問題が何であるか教えてくれませんでした。これは私たちがあなたを助けることができないことを意味します。 –

+0

現在のユーザーのuidの下に既にデータがある場合、データを追加することは想定されていません。しかし、現在のユーザーのuidの下に既にデータがある場合は、データを置き換えます。どのようなことをするべきではない –

答えて

0

:あなたはおそらくご覧のよう

mDatabaseReference.child("drivers").child(userid).getRef().toString() != userid || mDatabaseReference.child("parents").getRef().child(userid).toString() != useremail) { 

mDatabaseReference.child("drivers").child(userid).toString() != userid || mDatabaseReference.child("parents").child(userid).toString() != useremail) { 

を、私は実際に取得するgetRef()メソッドが追加されました参照。

希望します。

+0

このコードを試してみましょう。 –

+0

申し訳ありませんが、そのコードは機能しません。現在、編集テキストで名前を変更すると、データがアップロードされます。また、ドライバセクションと親セクションの両方にデータをアップロードすることができます。私はドライバや両親に一度だけアップロードできるようにしたい。 –

+0

それに応じてロジックを変更する。 Remeberでは、 'getRef()'メソッドは必須です。 –

関連する問題