1
私はfirebaseデータベースを使用しています。私のアプリではデータベースにデータを入れましたが、問題は私がこれらを取得しないことです。 このコードでは、一意のユーザー名で登録しますが、登録アクティビティでデータを入力すると、同じユーザー名の情報が更新されます。 コードの冒頭に、FirebaseDatabase database is equal to "null"
がありますが、なぜそれはわかりません。FirebaseDatabaseでデータを取得する
マイfirebaseデータ構造:
Registration.java:
public class Registration extends AppCompatActivity {
EditText ET_USER_LOCATION, ET_USER_MAIL, ET_USER_NAME, ET_USER_PASS;
String method, user_location, user_mail, user_name, user_pass;
Button registerButton;
Context mContext;
String token = FirebaseInstanceId.getInstance().getToken();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference users = database.getReference("UserApp");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
mContext = this;
ET_USER_LOCATION = (EditText) findViewById(R.id.new_user_location);
ET_USER_MAIL = (EditText) findViewById(R.id.new_user_mail);
ET_USER_NAME = (EditText) findViewById(R.id.new_user_name);
ET_USER_PASS = (EditText) findViewById(R.id.new_user_pass);
registerButton = (Button) findViewById(R.id.registerButton);
registerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
user_location = ET_USER_LOCATION.getText().toString();
user_mail = ET_USER_MAIL.getText().toString();
user_name = ET_USER_NAME.getText().toString();
user_pass = ET_USER_PASS.getText().toString();
DatabaseReference name = users.child("user_name");
name.addValueEventListener(new ValueEventListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String user = dataSnapshot.getValue(String.class);
if(!Objects.equals(user, user_name)){
writeNewUser(user_name, user_mail, user_pass, user_location, token);
} else {
Toast.makeText(mContext, "This username is already registered. Try again!", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
finish();
}
});
}
public void userReg(){
}
private void writeNewUser(String user_name, String user_mail, String user_pass, String user_location, String user_token) {
UserApp user = new UserApp(user_name, user_mail, user_pass, user_location, user_token);
users.child(user_name).setValue(user);
}
}
UserApp.java:
@IgnoreExtraProperties
public class UserApp {
public String user_name;
public String user_mail;
public String user_pass;
public String user_location;
public String user_token;
public UserApp() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public UserApp(String user_name, String user_mail, String user_pass, String user_location, String user_token) {
this.user_name = user_name;
this.user_mail = user_mail;
this.user_pass = user_pass;
this.user_location = user_location;
this.user_token = user_token;
}
}
ご協力いただきありがとうございます。
をあなたもあなたのFirebase構造をしてください含めることはできますか? –
データ構造体を追加しました – Carlo
事前にvalueEventListenerを設定してグローバルArrayListに割り当てて、そのユーザーがArrayListに含まれているかどうかを確認してください。 –