有没有办法只传递一个 "user" 对象而不是用户的所有变量

Is there any way to just pass a "user" object instead of all the variables of user

我有一个登录页面,现在在用户登录后我传递了它的所有数据,如 usernamepassword 等。我想知道我是否有可能就像整个用户一样传递它,我可以使用 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);

Is there any way to just pass a "user" object instead of all the variables of the user?

当然有。您可以添加整个用户对象,而不是添加所有这些值。但要实现这一点,您必须创建一个如下所示的模型 class:

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);

而要在另一个 activity 中取回它,请使用以下代码行:

User user = (User) getIntent().getSerializableExtra("user");
Log.d("TAG", user);