textview不会从FirebaseFirestore中的数据设置文本

时间:2018-10-06 23:00:55

标签: android firebase android-edittext textview

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打印正确的数据。

0 个答案:

没有答案