android - 空对象引用上的 java.lang.String com.google.firebase.firestore.DocumentSnapshot.getString(java.lang.String)
问题描述
我使用 firestore.DocumentSnapshot.getString 来获取用户数据并且它实际工作并且我在界面上获得了用户数据,问题是每当我尝试签出时发生崩溃说“涉及空对象引用上的虚拟方法”
可以请帮助家伙...?
@Nullable
public View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_sttings, container, false);
firestore = FirebaseFirestore.getInstance();
emailedit = view.findViewById(R.id.emailedit);
phoneedit = view.findViewById(R.id.phoneedit);
useredit = view.findViewById(R.id.useredit);
chngpass = view.findViewById(R.id.chngpass);
signin = view.findViewById(R.id.signin);
signin.setVisibility(View.INVISIBLE);
signout = view.findViewById(R.id.signout);
firebaseAuth = FirebaseAuth.getInstance();
fStore = FirebaseFirestore.getInstance();
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
.setTimestampsInSnapshotsEnabled(true)
.build();
fStore.setFirestoreSettings(settings);
if (firebaseAuth.getCurrentUser() != null) {
userId = firebaseAuth.getCurrentUser().getUid();
DocumentReference documentReference = fStore.collection("users").document(userId);
documentReference.addSnapshotListener(getActivity(), new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot,
@Nullable FirebaseFirestoreException e) {
phoneedit.setText(documentSnapshot.getString("Phone Number"));
useredit.setText(documentSnapshot.getString("Username"));
emailedit.setText(documentSnapshot.getString("Email Address"));
}
});
}
signout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseAuth.getInstance().signOut();
Intent signoutint = new Intent(getActivity(), MainActivity.class);
startActivity(signoutint);
getActivity().finish();
}
});
return view;
}
}
崩溃的开始:
2020-04-15 08:11:47.051 11045-11045/com.example.sendthro E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.sendthro, PID: 11045
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.firestore.DocumentSnapshot.getString(java.lang.String)' on a null object reference
at com.example.sendthro.settings$1.onEvent(settings.java:70)
at com.example.sendthro.settings$1.onEvent(settings.java:65)
解决方案
有这个构造函数是问题:)!!
public settings(){
//Required empty Constructor
}
推荐阅读
- vb.net - VB.NET:DataGridView 同一列中的不同按钮
- android - 如何使用 rxjava 实时更新列表?
- javascript - 在 MVC 模式中,避免在我的视图类中调用控制器的最佳方法是什么?
- angular - Angular Ionic 3 Form Builder以正确的方式验证消息
- sql - 两个临时表的 SQL 加法
- mysql - 如何在日期范围内加入 MySQL 表?
- amazon-web-services - 我有一个 50gb vdi 映像,托管它以进行分发的最佳方式是什么?
- javascript - Angular - 有效地创建验证器
- pivot-table - Google Data Studio:如果单元格中的记录少于 x,是否可以在数据透视表中过滤结果?
- javascript - 如何防止 Google 地方信息返回阿拉伯语地址?