我有一個登錄頁面,而現在用戶登錄后,我通過它的所有資料,如username,password等我想知道如果有可能,我只是通過像一個整體的用戶,它是用戶物件我可以只使用getter 和 setter 來獲取用戶相關資訊。我正在使用 Firebase 進行這個專案,所以也許我可以檢查當前登錄的用戶或其他東西,我不確定哪種方法最適合于此。請讓我知道是否有這樣的方法。
我目前如何傳遞資料:
if (dataSnapshot.exists()) {
username.setError(null);
username.setErrorEnabled(false);
String passwordFromDB = dataSnapshot.child(userEnteredUsername).child("password").getValue(String.class);
if (passwordFromDB.equals(userEnteredPassword)) {
username.setError(null);
username.setErrorEnabled(false);
String userNameFromDB = dataSnapshot.child(userEnteredUsername).child("username").getValue(String.class);
String ageFromDB = dataSnapshot.child(userEnteredUsername).child("age").getValue(String.class);
String creditsFromDB = dataSnapshot.child(userEnteredUsername).child("credits").getValue(String.class);
String idFromDB = dataSnapshot.child(userEnteredUsername).child("id").getValue(String.class);
Intent intent = new Intent(getApplicationContext(),HomePage.class);
intent.putExtra("username",userNameFromDB);
intent.putExtra("password",passwordFromDB);
intent.putExtra("age",ageFromDB);
intent.putExtra("credits",creditsFromDB);
intent.putExtra("id",idFromDB);
Toast toast = Toast.makeText(getApplicationContext(),"Login Successful",Toast.LENGTH_SHORT);
toast.show();
startActivity(intent);

uj5u.com熱心網友回復:
有沒有辦法只傳遞“用戶”物件而不是用戶的所有變數?
肯定有。您可以添加整個用戶物件,而不是添加所有這些值。但要實作這一點,您必須創建一個如下所示的模型類:
class User implements Serializable {
String username, password, age, credits, id;
public User(String username, String password, String age, String credits, String id) {
this.username = username;
this.password = password;
this.age = age;
this.credits = credits;
this.id = id;
}
@Override
public String toString() {
return "User{"
"username='" username '\''
", password='" password '\''
", age='" age '\''
", credits='" credits '\''
", id='" id '\''
'}';
}
}
不要忘記實作Serializable介面。現在要將物件添加到意圖中,請像這樣創建它:
String userNameFromDB = dataSnapshot.child(userEnteredUsername).child("username").getValue(String.class);
String passwordFromDB = dataSnapshot.child(userEnteredUsername).child("password").getValue(String.class);
String ageFromDB = dataSnapshot.child(userEnteredUsername).child("age").getValue(String.class);
String creditsFromDB = dataSnapshot.child(userEnteredUsername).child("credits").getValue(String.class);
String idFromDB = dataSnapshot.child(userEnteredUsername).child("id").getValue(String.class);
User user = new User(userNameFromDB, passwordFromDB, ageFromDB, creditsFromDB, idFromDB);
Intent intent = new Intent(getApplicationContext(),HomePage.class);
intent.putExtra("user", user);
并在其他活動中取回它,請使用以下代碼行:
User user = (User) getIntent().getSerializableExtra("user");
Log.d("TAG", user);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367129.html
