# #android #firebase #firebase-realtime-database
Вопрос:
Цель моей программы состоит в том, чтобы создать страницу профиля с деталями, которые будут пустыми при первом использовании, затем эти данные можно будет редактировать и сохранять после нажатия кнопки обновления. Тем не менее, я пробовал много разных способов, таких как sharedprefs и firebase. Для меня это просто не работает.
Способ firebase заключается в том, что после нажатия кнопки обновления он просто переходит к основному действию, а затем ничего не обновляет и не меняет.
вот код базы огня
showAllUserData(); //DB reference = FirebaseDatabase.getInstance("https://backend-d820a-default-rtdb.firebaseio.com/").getReference("user");
private void showAllUserData(){ Intent intent = getIntent(); _NAME = intent.getStringExtra("name"); _NUMBER = intent.getStringExtra("num"); _ADDRESS = intent.getStringExtra("add"); _AGE = intent.getStringExtra("age"); _BDAY = intent.getStringExtra("bday"); _BTYPE = intent.getStringExtra("btype"); _COMORB = intent.getStringExtra("comorb"); editName.setText(_NAME); editNum.setText(_NUMBER); editAdd.setText(_ADDRESS); editAge.setText(_AGE); editBday.setText(_BDAY); editBType.setText(_BTYPE); editComorb.setText(_COMORB); } public void update(View view){ if (isNameChanged() || isNumberChanged() || isAddChanged() || isAgeChanged() || isBdayChanged() || isBTypeChanged() || isComorbChanged()) { Toast.makeText(this, "Data has been updated", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(this, "Data his same and cannot be updated", Toast.LENGTH_LONG).show(); } } private boolean isComorbChanged() { if(_COMORB.equals(editComorb.getText().toString())){ reference.child(_COMORB).child("COMORB").setValue(editComorb.getText().toString()); return true; }else{ return false; } } private boolean isBTypeChanged() { if(_BTYPE.equals(editBType.getText().toString())){ reference.child(_BTYPE).child("btype").setValue(editBType.getText().toString()); return true; }else{ return false; } } private boolean isBdayChanged() { if(_BDAY.equals(editBday.getText().toString())){ reference.child(_BDAY).child("bday").setValue(editBday.getText().toString()); return true; }else{ return false; } } private boolean isAgeChanged() { if(_AGE.equals(editAge.getText().toString())){ reference.child(_AGE).child("age").setValue(editAge.getText().toString()); return true; }else{ return false; } } private boolean isAddChanged() { if(_NUMBER.equals(editNum.getText().toString())){ reference.child(_NUMBER).child("address").setValue(editNum.getText().toString()); return true; }else{ return false; } } private boolean isNumberChanged() { if(_NUMBER.equals(editNum.getText().toString())){ reference.child(_NUMBER).child("numBER").setValue(editNum.getText().toString()); return true; }else{ return false; } } private boolean isNameChanged() { if(_NAME.equals(editName.getText().toString())){ reference.child(_NAME).child("name").setValue(editName.getText().toString()); return true; }else{ return false; }
Есть ли более простой способ реализовать это?
Комментарии:
1. «Это просто не работает» — действительно трудно помочь. Я рекомендую пройтись по вашему коду строка за строкой в отладчике и проверить переменные в каждой строке. Когда вы это делаете, какая первая строка не делает того, чего вы от нее ожидаете? Есть ли какие-либо сообщения об ошибках, записанные в logcat для этой конкретной строки?
2. Пожалуйста, отредактируйте свой вопрос и добавьте информацию, которую просил Фрэнк ван Пуффелен, и, пожалуйста, также ответьте @.
3. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.