gpt4 book ai didi

java - 数据快照中出现空指针异常字符串错误

转载 作者:行者123 更新时间:2023-12-01 07:45:33 24 4
gpt4 key购买 nike

我知道这个问题过去曾被问过。我尝试了几乎所有他们的解决方案,但对我不起作用。抱歉再次问这个问题。但是有人可以帮我解决这个错误吗?

Here is my code.

public class ProfileActivity extends AppCompatActivity {

TextView userEmail;
TextView userID;
TextView userGender;
TextView userName;
Button userLogout;

FirebaseAuth firebaseAuth;
FirebaseUser firebaseUser;

FirebaseDatabase firebaseDatabase;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);

userEmail = findViewById(R.id.tvUserEmail);
userGender = findViewById(R.id.tvGender);
userName = findViewById(R.id.tvName);
userID = findViewById(R.id.tvUserID);
userLogout = findViewById(R.id.btnLogout);

firebaseAuth = FirebaseAuth.getInstance();
firebaseUser = firebaseAuth.getCurrentUser();


firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase.getReference().child(firebaseUser.getUid());

//userEmail.setText(firebaseUser.getEmail());

databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

String userEmailstr = dataSnapshot.child("email").getValue().toString();
String userNamestr = dataSnapshot.child("name").getValue().toString();
String userGenderstr = dataSnapshot.child("gender").getValue().toString();
String userIDstr = dataSnapshot.child("id").getValue().toString();


userEmail.setText(userEmailstr);
userGender.setText(userGenderstr);
userName.setText(userNamestr);
userID.setText(userIDstr);
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(getApplicationContext(),databaseError.getMessage(),Toast.LENGTH_SHORT).show();
}
});



userLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseAuth.getInstance().signOut();
Intent intent = new Intent(ProfileActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
});
}}

错误出现在数据快照字符串上。据说它位于空对象引用上

Here is the logcat

 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at com.example.patrick.test.ProfileActivity$1.onDataChange(ProfileActivity.java:60)
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)

Here is my database enter image description here

最佳答案

您使用时:

.child(firebaseUser.getUid())

这意味着您要将来自 Firebase 身份验证过程的用户 ID 传递给子方法。但是传递这个 id 并没有帮助,因为在你的数据库中我看到你有一个由 push() 方法生成的 id,而不是 来自 的 id >FirebaseUser 对象。

因此,要解决此问题,您可以将正确的 id 传递给 child() 方法,即 -LS3X ... 6Meg ,或者更改您的方式通过删除 push() 调用将用户添加到数据库并使用如下内容:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.child("Accounts").child(uid).setValue(userObject);

推荐使用第二种解决方案。另外,请不要忘记添加您的引用中目前缺少的 Accounts 额外子项。

关于java - 数据快照中出现空指针异常字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53456417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com