【发布时间】:2021-08-26 09:03:23
【问题描述】:
第一次发布任务,我是一名学生,我的代码有问题。我的应用程序可以将“日期”保存到我的 Firestore 数据库,但是当我编辑它时,文本视图无法检索我的 Firestore 数据库中的日期数据。如何检索 DATE 数据以便进行编辑。
这是我正在编辑的代码
public class EditProfile extends AppCompatActivity {
public static final String TAG = "TAG";
EditText profileFullName,profileEmail,profilePhone,profileAddre,profileBday;
ImageView profileImageView;
Button saveBtn;
FirebaseAuth fAuth;
FirebaseFirestore fStore;
FirebaseUser user;
StorageReference storageReference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_profile);
Intent data = getIntent();
final String fullName = data.getStringExtra("fullName");
String email = data.getStringExtra("email");
String phone = data.getStringExtra("phone");
String addre = data.getStringExtra("addre");
String singup_bday = data.getStringExtra("singup_bday");
fAuth = FirebaseAuth.getInstance();
fStore = FirebaseFirestore.getInstance();
user = fAuth.getCurrentUser();
storageReference = FirebaseStorage.getInstance().getReference();
profileFullName = findViewById(R.id.profileFullName);
profileEmail = findViewById(R.id.profileEmailAddress);
profilePhone = findViewById(R.id.profilePhoneNo);
profileAddre = findViewById(R.id.profileEditAddress);
profileImageView = findViewById(R.id.profileImageView);
profileBday = findViewById(R.id.profileEditBday);
saveBtn = findViewById(R.id.saveProfileInfo);
StorageReference profileRef = storageReference.child("users/"+fAuth.getCurrentUser().getUid()+"/profile.jpg");
profileRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.get().load(uri).into(profileImageView);
}
});
profileImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent openGalleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(openGalleryIntent,1000);
}
});
saveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(profileBday.getText().toString().isEmpty() || profileAddre.getText().toString().isEmpty() || profileFullName.getText().toString().isEmpty() || profileEmail.getText().toString().isEmpty() || profilePhone.getText().toString().isEmpty()){
Toast.makeText(EditProfile.this, "One or Many fields are empty.", Toast.LENGTH_SHORT).show();
return;
}
final String email = profileEmail.getText().toString();
user.updateEmail(email).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
DocumentReference docRef = fStore.collection("users").document(user.getUid());
Map<String,Object> edited = new HashMap<>();
edited.put("email",email);
edited.put("fName",profileFullName.getText().toString());
edited.put("phone",profilePhone.getText().toString());
edited.put("addre",profileAddre.getText().toString());
edited.put("singup_bday",profileBday.getText().toString());
docRef.update(edited).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(EditProfile.this, "Profile Updated", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(),MainActivity.class));
finish();
}
});
Toast.makeText(EditProfile.this, "Email is changed.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(EditProfile.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
});
profileEmail.setText(email);
profileFullName.setText(fullName);
profilePhone.setText(phone);
profileAddre.setText(addre);
profileBday.setText(singup_bday);
Log.d(TAG, "onCreate: " + fullName + " " + email + " " + phone + " " + addre + " " + singup_bday);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @androidx.annotation.Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1000){
if(resultCode == Activity.RESULT_OK){
Uri imageUri = data.getData();
//profileImage.setImageURI(imageUri);
uploadImageToFirebase(imageUri);
}
}
}
private void uploadImageToFirebase(Uri imageUri) {
// upload image to firebase storage
final StorageReference fileRef = storageReference.child("users/"+fAuth.getCurrentUser().getUid()+"/profile.jpg");
fileRef.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
fileRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Picasso.get().load(uri).into(profileImageView);
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(), "Failed.", Toast.LENGTH_SHORT).show();
}
});
}
这是我的保存代码
public class Register extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
private TextView dateText;
public static final String TAG = "TAG";
EditText mFullName,mEmail,mPassword,mPhone,mAddress,mBday;
Button mRegisterBtn;
TextView mLoginBtn;
FirebaseAuth fAuth;
ProgressBar progressBar;
FirebaseFirestore fStore;
String userID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mFullName = findViewById(R.id.fullName);
mEmail = findViewById(R.id.Email);
mPassword = findViewById(R.id.password);
mPhone = findViewById(R.id.phone);
mAddress = findViewById(R.id.addre);
mBday = findViewById(R.id.singup_bday);
mRegisterBtn= findViewById(R.id.registerBtn);
mLoginBtn = findViewById(R.id.createText);
fAuth = FirebaseAuth.getInstance();
fStore = FirebaseFirestore.getInstance();
progressBar = findViewById(R.id.progressBar);
dateText = findViewById(R.id.singup_bday);
findViewById(R.id.singup_bday).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDatePickerDialog();
}
});
if(fAuth.getCurrentUser() != null){
startActivity(new Intent(getApplicationContext(),MainActivity.class));
finish();
}
mRegisterBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String email = mEmail.getText().toString().trim();
String password = mPassword.getText().toString().trim();
final String fullName = mFullName.getText().toString();
final String phone = mPhone.getText().toString();
final String addre = mAddress.getText().toString();
final String signup_bday = mBday.getText().toString();
if(TextUtils.isEmpty(email)){
mEmail.setError("Email is Required.");
return;
}
if(TextUtils.isEmpty(password)){
mPassword.setError("Password is Required.");
return;
}
if(password.length() < 6){
mPassword.setError("Password Must be >= 6 Characters");
return;
}
if(TextUtils.isEmpty(addre)){
mAddress.setError("Address is Required.");
return;
}
if(TextUtils.isEmpty(signup_bday)){
mBday.setError("Birthday is Required.");
return;
}
progressBar.setVisibility(View.VISIBLE);
// register the user in firebase
fAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
// send verification link
FirebaseUser fuser = fAuth.getCurrentUser();
fuser.sendEmailVerification().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(Register.this, "Verification Email Has been Sent.", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "onFailure: Email not sent " + e.getMessage());
}
});
Toast.makeText(Register.this, "User Created.", Toast.LENGTH_SHORT).show();
userID = fAuth.getCurrentUser().getUid();
DocumentReference documentReference = fStore.collection("users").document(userID);
Map<String,Object> user = new HashMap<>();
user.put("fName",fullName);
user.put("email",email);
user.put("phone",phone);
user.put("addre",addre);
user.put("bday",signup_bday);
documentReference.set(user).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "onSuccess: user Profile is created for "+ userID);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d(TAG, "onFailure: " + e.toString());
}
});
startActivity(new Intent(getApplicationContext(),MainActivity.class));
}else {
Toast.makeText(Register.this, "Error ! " + task.getException().getMessage(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
}
});
}
});
mLoginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(),Login.class));
}
});
}`
【问题讨论】:
-
如果您遇到问题,最好在发布问题时创建MCVE。您为此问题发布了近 300(三百)行行代码。人们需要解析和尝试在线调试的内容很多。请编辑您的问题并隔离问题,这样可以增加获得帮助的机会。
-
除此之外,这段代码中究竟有什么不符合您的预期?告诉我们共享代码有什么问题。你有什么错误吗?
-
@AlexMamo imgur.com/M6kAH7C 你能检查一下链接吗?对不起,我不能正确地说和理解英语
标签: java android firebase google-cloud-firestore