java - 数据快照中的 Nullpointer exeption 字符串出错
问题描述
我知道过去有人问过这个问题。我已经尝试了几乎所有他们的解决方案都对我不起作用。很抱歉再次问这个问题。但是有人可以帮我解决这个错误。
这是我的代码。
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);
}
});
}}
错误出现在数据快照字符串上。据说它在一个空对象引用上
这是日志猫
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)
解决方案
你需要改变
DatabaseReference databaseReference = firebaseDatabase.getReference().child(firebaseUser.getUid());
至
DatabaseReference databaseReference = firebaseDatabase.getReference().child("Accounts").child(firebaseUser.getUid());
您指向错误的节点。不包含所需数据。
笔记:
您不需要在push_id
内部存储为id
.
您可以简单地获取它而无需将其存储在里面。
String userIDstr = dataSnapshot.getKey();
推荐阅读
- javascript - 如何在 React 中的子组件和父组件之间共享数据?
- android - Chromium Browser Code中WebViewClient的“shouldInterceptRequest”对应的方法是什么?
- awk - compare different column of 2 different files and keep the orderin awk script
- java - 无法在 Cordova 应用程序中导入 Chunk 主题
- c# - XML 对象引用未设置为对象的实例
- c# - 提供的有效负载无法解密,因为它不受此保护提供程序的保护
- python - 在python中总结三个数据帧
- php - DataTables warning: table id=users_list - Invalid JSON response. For more information about this error, please see http://datatables.net/tn/1
- android - 从片段Dagger 2 Kotlin android替换片段
- php - 使用 curl php 集成 Razorpayx