简体   繁体   English

为什么我的用户名没有出现在TextView中?

[英]Why my username doesn't appear in the TextView?

I have a java.lang.NullPointerException and I don't know how to fix it. 我有一个java.lang.NullPointerException ,我不知道如何解决。 My username doesn't appear in the TextView . 我的用户名未出现在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) {

        }
    });

The log say I have an error on profileuser.setText(user.getUsername()); 日志说我在profileuser.setText(user.getUsername());上有错误profileuser.setText(user.getUsername()); please help me. 请帮我。

Heres my logcat: 这是我的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)

From the log, I think that user.getImageURL() is null, so you can check that value against null first before comparing. 从日志中,我认为user.getImageURL()为null,因此您可以在比较之前先将其与null进行比较。 Or a more standard way is moving what you know it is not null for sure before equals like this if ("default".equals(user.getImageURL())) 或者,更标准的方法是在equals if ("default".equals(user.getImageURL()))这样) if ("default".equals(user.getImageURL()))之前移动您知道的不为null的内容

This is usually because of getting the wrong reference for your data. 这通常是因为获取了错误的数据参考。 This maybe the problem: 这可能是问题所在:

reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());

Typical data node name is using lowercase, so probably you're have a typo there. 典型的数据节点名称使用小写字母,因此您可能在这里输入错字。

Or you need to check if you have the correct User data with: 或者您需要使用以下方法检查您是否具有正确的用户数据:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM