

我使用 firebase 開發了身份驗證,它作業正常,但我想添加一個額外的模塊來添加用戶組態檔影像。所以我首先撰寫了 2 個函式,用于在 firebase 實時資料庫中使用電子郵件和密碼進行用戶注冊,第二個函式用于上傳用戶個人資料影像......我只是在用戶模型類中添加 pimage 變數,但我在這里遇到錯誤用戶模型物件和 (uri.toString()) 的先前引數;
這是使用電子郵件和密碼創建用戶的代碼
private void register_doctor () {
String dname = et_name.getText().toString().trim();
String demail = et_email.getText().toString().trim();
String dpass = et_pass.getText().toString().trim();
String dcpass = et_cnf_pass.getText().toString().trim();
String dcontact = et_contact.getText().toString().trim();
String dcity = et_city.getText().toString().trim();
String dage = et_age.getText().toString().trim();
if (dname.isEmpty()) {
et_name.setError("Full Name is Required");
et_name.requestFocus();
return;
}
if (demail.isEmpty()) {
et_email.setError("Email is Required");
et_email.requestFocus();
return;
}
if (dpass.isEmpty()) {
et_pass.setError("Password is Required");
et_pass.requestFocus();
return;
}
if (dpass.length() < 6) {
et_pass.setError("Password Length Should be greater than 6 characters");
et_pass.requestFocus();
return;
}
if (dcpass.isEmpty()) {
et_cnf_pass.setError("Password is Required");
et_cnf_pass.requestFocus();
return;
}
if (!dcpass.equals(dpass)) {
et_cnf_pass.setError("Password Does not Matched!");
et_cnf_pass.requestFocus();
return;
}
if (dcontact.isEmpty()) {
et_contact.setError("Contact is Required");
et_contact.requestFocus();
return;
}
if (dcity.isEmpty()) {
et_city.setError("City is Required");
et_city.requestFocus();
return;
}
if (dage.isEmpty()) {
et_age.setError("Age is Required");
et_age.requestFocus();
return;
}
progressBar.setVisibility(View.VISIBLE);
mAuth.createUserWithEmailAndPassword(demail, dpass)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
User user = new User(dname, demail, dcontact, dcity, dage);??
FirebaseDatabase.getInstance().getReference("doctors")
.child("Doctors_Registration")
// .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.child(demail.replace(".", ","))
.setValue(user)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(signup.this, "Doctor Registered", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
} else {
Toast.makeText(signup.this, "Failed to Registered, Try Again!" task.getException(), Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
}
}
});
} else {
Toast.makeText(signup.this, "Failed to Registered, Try Again!", Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
}
}
});
}
這是上傳用戶個人資料圖片的功能
private void upload_image() {
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference uploader = storage.getReference("Image1" new Random().nextInt(50));
uploader.putFile(filepath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
uploader.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference root = db.getReference("Doctors_Registration");
User obj = new User(uri.toString()); ??
root.child(et_email.getText().toString()).setValue(obj);
// iv.setImageResource(R.drawable.ic_launcher_background);
Toast.makeText(signup.this, "Profile Image Uploaded", Toast.LENGTH_SHORT).show();
}
});
}
});
}
這是用戶模型類代碼
public class User {
public String name, email, password, contact, city, age, pimage;
public User(){
}
public User(String name, String email, String contact, String city, String age, String pimage){
this.name = name;
this.email = email;
this.contact = contact;
this.city = city;
this.age = age;
this.pimage = pimage;
}
}
uj5u.com熱心網友回復:
你的User類有兩個建構式:
- 一個不需要爭論的人。
- 還有一個以 6 個字串值作為其引數。
在兩個螢屏截圖中,您嘗試構建一個User物件:
- 首先使用單個字串值,
- 然后使用 5 個字串值。
由于這些呼叫都不匹配您定義的建構式,因此編譯器無法編譯您的代碼。
要允許構造 a User,請確保為要傳遞的引數添加建構式多載,或者傳遞與您定義的建構式匹配的引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/433419.html
標籤:爪哇 安卓 firebase-实时数据库
下一篇:KafkaStreams:java.lang.IllegalArgumentException:VoidDeserializer的資料應該為空
