【发布时间】:2020-06-07 11:00:22
【问题描述】:
我的数据结构:
我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle("");
profile_image = findViewById(R.id.profile_image);
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
username = findViewById(R.id.username);
reference = FirebaseDatabase.getInstance().getReference("databasename").child("Users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
username.setText(user.getUsername());
if (user.getImageURL().equals("default")) {
profile_image.setImageResource(R.mipmap.ic_launcher);
} else {
Glide.with(MainActivity.this).load(user.getImageURL()).into(profile_image);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public boolean onCreateOptionsMenu (Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.logout:
FirebaseAuth.getInstance().signOut();
startActivity(new Intent(MainActivity.this, StartActivity.class));
finish();
return true;
}
return false;
}
@Override
protected void onStart(){
super.onStart();
if(firebaseUser == null) {
Intent homeIntent = new Intent(MainActivity.this, StartActivity.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(homeIntent);
finish();
}
}
}
登录时,我总是在空对象引用错误时尝试调用虚拟方法java.lang.String com.dantools.OurChat.Model.User.getUsername()。
我试图改变一些东西,但无论如何它都不起作用。
我也试过改registerActivity里面的HashMap还是不行。
【问题讨论】:
-
这是我的数据库结构:imgur.com/a/l3F0f5n
标签: java android firebase firebase-realtime-database