从Firebase填充Textview。错误:无法为child()中的参数'pathString'传递null

时间:2017-08-11 08:57:16

标签: android firebase firebase-realtime-database

很长一段时间一直在寻找我做错的事情,希望能在这里找到一些帮助。我正在尝试从Firebase填充文本视图。

private TextView txtDetails;
private DatabaseReference mFirebaseDatabase;
private FirebaseDatabase mFirebaseInstance;
private String userId;
private EditText inputLastName;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gb_personal_profile);

    txtDetails = (TextView) findViewById(R.id.txt_profile_name);

    mFirebaseDatabase = 
 FirebaseDatabase.getInstance().getReference("users");

    mFirebaseDatabase.child(userId).addValueEventListener(new 
ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            gbCreationUNameDB user = 
dataSnapshot.getValue(gbCreationUNameDB.class);


            txtDetails.setText(user.first_name);

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}
}

这是用户

import com.google.firebase.database.IgnoreExtraProperties;

@IgnoreExtraProperties
public class gbCreationUNameDB {
public String first_name;
public String last_name;


public gbCreationUNameDB() {
}

public gbCreationUNameDB(String first_name, String last_name) {
    this.first_name = first_name;
    this.last_name = last_name;
}

public String getfirst_name() {
    return first_name;
}
}

非常感谢。已经检查了所有资源,无法弄清楚

1 个答案:

答案 0 :(得分:0)

当您从dataSnapshot对象获取def float_unicode(arg_str): return float(arg_str.decode("utf8").replace(u"\u2212", "-")) 的对象时,您正在使用以下代码行:

gbCreationUNameDB class

这意味着您正试图直接获取txtDetails.setText(user.first_name); 字段的值,但这种方法是错误的。要获得该值,您需要使用这样的公共getter:

first_name

其次,在txtDetails.setText(user.getfirst_name()); 中,只有一个元素可以为null,这是DatabaseReference。正如我在您的代码中看到的那样,您无法从任何地方获取此元素。因此,要获取用户uid,请使用以下代码:

userId

希望它有所帮助。