public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private EditText nameEdit, ageEdit;
private TextView name, age;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nameEdit = findViewById(R.id.nameText);
ageEdit = findViewById(R.id.ageText);
name = findViewById(R.id.textView);
age = findViewById(R.id.textView2);
btn = findViewById(R.id.button);
final DocumentReference docRef = db.document("users/user2");
final Map<String, Object> user = new HashMap<>();
docRef.set(user);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nameString = nameEdit.getText().toString();
String ageStr = ageEdit.getText().toString();
if(ageStr.equals(""))
ageStr = "0";
int ageInt = Integer.parseInt(ageStr);
user.put("name", nameString);
user.put("age", ageInt);
docRef.set(user);
docRef.get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
System.out.println(task.getResult().getData().get("name").toString());
name.setText(task.getResult().getData().get("name").toString());
age.setText(task.getResult().getData().get("age").toString());
}
}
});
}
});
}
}
问题是
name.setText(task.getResult().getData().get("name").toString());
无法正常工作。
和age.setText(task.getResult().getData().get("age").toString());
效果很好。
我检查了Firebase数据库中是否存在来自EditText的数据。并且有效。
age(textview)
会在我的应用程序上显示更改的文本。
但name(textview)
不显示更改后的文本。
但是数据存在。因为System.out.println(task.getResult().getData().get("name").toString());
可以正常工作。并从firebase打印正确的数据。