首页 > 解决方案 > 空对象引用上的 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)

标签: androidfirebasegoogle-cloud-firestore

解决方案


有这个构造函数是问题:)!!

 public settings(){
        //Required empty Constructor
    } 

推荐阅读