В обработчике событий addvalue я получаю сообщение об ошибке - PullRequest
1 голос
/ 19 апреля 2020
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.navigation, PID: 2579
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
        at com.example.navigation.camera$2$1.onDataChange(camera.java:222)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.1:75)
        at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.1:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.1:55)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:192)
        at android.app.ActivityThread.main(ActivityThread.java:6748)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:875)

java .lang.NullPointerException: попытка вызвать виртуальный метод 'java .lang.String java .lang.Object.toString ()' для ссылки на пустой объект в com. example.navigation.camera $ 2 $ 1.onDataChange (camera. java: 222)

Может кто-нибудь решить эту ошибку

DatabaseReference reff = FirebaseDatabase.getInstance().getReference();

        description_info = findViewById(R.id.description_info);
        planting_time_info = findViewById(R.id.planting_time_info);
        bloom_time_info = findViewById(R.id.bloom_time_info);
        Hardiness_info = findViewById(R.id.Hardiness_info);

        moredetails = findViewById(R.id.moredetails);
        moredetails.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

String Tea = "Tea";
                String Cotton = "Cotton";

                if (Tea.equals(label1.getText().toString())) {

                    reference = reff.child("CropName").child("Tea");

                }else if (Cotton.equals(label1.getText().toString())){
                    reference = reff.child("CropName").child("Cotton");
                }
reff.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                            String description = dataSnapshot.child("description").getValue().toString().trim();
                            String planting_time = dataSnapshot.child("planting_time").getValue().toString().trim();
                            String bloom_time = dataSnapshot.child("bloom_time").getValue().toString().trim();
                            String hardiness = dataSnapshot.child("hardiness").getValue().toString().trim();
                            description_info.setText(description);
                            planting_time_info.setText(planting_time);
                            bloom_time_info.setText(bloom_time);
                            Hardiness_info.setText(hardiness);
                    }
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });

       }
        });

1 Ответ

2 голосов
/ 19 апреля 2020

reff.addValueEventListener(//..) ссылка здесь reff указывает на узел root вашей базы данных. Поскольку description не является прямым потомком узла root, вы получили следующую ошибку. Вы должны изменить:

reff.addValueEventListener

На:

reference.addValueEventListener 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...