我有一个java.lang.NullPointerException,我不知道如何解决它。我的用户名没有出现在TextView中。public class Main extends AppCompatActivity { CircleImageView profilepic; TextView profileuser; FirebaseUser firebaseUser; DatabaseReference reference; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setTitle(""); profilepic = findViewById(R.id.profile_image); profileuser = findViewById(R.id.username); firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid()); reference.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { User user = dataSnapshot.getValue(User.class); profileuser.setText(user.getUsername()); if (user.getImageURL().equals("default")){ profilepic.setImageResource(R.mipmap.ic_launcher); }else{ Glide.with(Main.this).load(user.getImageURL()).into(profilepic); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } });日志说我有错误profileuser.setText(user.getUsername());请帮助我。
2 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
从日志中,我认为这user.getImageURL()
是 null,因此您可以在比较之前先检查该值是否为 null。或者更标准的方法是移动你知道它不是空的东西,equals
就像这样 if ("default".equals(user.getImageURL()))
慕慕森
TA贡献1856条经验 获得超17个赞
这通常是因为您的数据引用错误。这可能是问题:
reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
典型的数据节点名称使用小写字母,因此您可能有错字。
或者您需要检查您是否拥有正确的用户数据:
User user = dataSnapshot.getValue(User.class);
if(user == null) {
// data not found
return;
}
// check for non null user name
if(user.getUsername != null) {
profileuser.setText(user.getUsername());
}
// check for non null image url
if(user.getImageURL() != null) {
if (user.getImageURL().equals("default")){
...
}
}
添加回答
举报
0/150
提交
取消