[英]Why my username doesn't appear in the TextView?
我有一個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());
上有錯誤profileuser.setText(user.getUsername());
請幫我。
這是我的logcat:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at com.aceappantipolo.user.aceantipolo.Main$1.onDataChange(Main.java:65)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.0.5:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.0.5:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.0.5:55)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:737)
從日志中,我認為user.getImageURL()
為null,因此您可以在比較之前先將其與null進行比較。 或者,更標准的方法是在equals
if ("default".equals(user.getImageURL()))
這樣) if ("default".equals(user.getImageURL()))
之前移動您知道的不為null的內容
這通常是因為獲取了錯誤的數據參考。 這可能是問題所在:
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")){
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.