Невозможно добавить ценность к объекту - PullRequest
0 голосов
/ 08 мая 2020

Итак, я создаю объект в поле MainActivity как поле, а в onCreate вызываю метод для загрузки данных из firecloud. В методе загрузки данных я добавляю значение для объекта, который объявляю как поле в MainActivity, но все же, когда я проверил значение из объекта, он выдаст ошибку с NullPointerException, вот упрощенный код:

EDIT: Добавить firebase logi c

public class MainActivity extends AppCompatActivity {
    Layanan UP;
    Layanan GU;
    Layanan LS;
    Bundle extras = new Bundle();
    String TAG = "a";

    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {

            loadData(extras);

            //I add new log
            try {
                UP = extras.getParcelable(UPParcelable);
                UP.getNama();
                Log.d(TAG, "Check if object not null after loadData() " + UP.getNama());
            } catch (NullPointerException e){
                e.printStackTrace();
                Log.d(TAG, "Null pointer message: " + e);
            }

        }
    }

    //loadData() look below
}

Кто-нибудь может сказать мне, почему UP все еще не имеет значения? Надеюсь будет какое-то просветление, аминь

как это исправить? Спасибо

РЕДАКТИРОВАТЬ 3: Вот фактический код loadData (), который я делаю

    public void loadData(final Bundle extrasBundle){

        mFirebase.collection("panduan_layanan")
                .addSnapshotListener(new EventListener<QuerySnapshot>() {
                    @Override
                    public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
                        if (e != null){
                            Log.w(TAG, "Listen error", e);
                            return;
                        }
                        for (QueryDocumentSnapshot doc : queryDocumentSnapshots){
                            if (doc.exists()){
                                if (doc.get("nama").equals("UP")){
                                    try {
                                    UP = doc.toObject(Layanan.class);
                                    extrasBundle.putParcelable(UPParcelable, UP);
                                    Log.v(TAG, "Success add " + UP.getNama());
                                    Log.d(IFDOC, "Check if object not null inside for loops, the value is " + UP.getNama());
                                    } catch (NullPointerException nep){
                                        nep.printStackTrace();
                                    }
                                }
                                if (doc.get("nama").equals("GU")){
                                    try {
                                    GU = doc.toObject(Layanan.class);
                                    extrasBundle.putParcelable(GUParcelable, GU);
                                    Log.v(TAG, "Success add " + GU.getNama());
                                    Log.d(IFDOC, "Check if object not null inside for loops, the value is " + GU.getNama());
                                    }catch (NullPointerException nep){
                                        nep.printStackTrace();
                                    }
                                }
                                if (doc.get("nama").equals("LS")){
                                    try {
                                    LS = doc.toObject(Layanan.class);
                                    extrasBundle.putParcelable(LSParcelable, LS);
                                    Log.v(TAG, "Success add " + LS.getNama());
                                    Log.d(IFDOC, "Check if object not null inside for loops, the value is " + LS.getNama());
                                    } catch (NullPointerException nep){
                                        nep.printStackTrace();

                                    }
                                }
                            }
                        }
                        try {
                            Log.d(OUTSIDEFOR, "Check if object not null from OUTSIDEFOR, the value is " + UP.getNama());
                            UP.getNama();
                        } catch (NullPointerException nep){
                            nep.printStackTrace();
                        }
                    }
                });
        try {
            Log.d(TAG, "loadData: " + UP.getNama());
        } catch (NullPointerException nep) {
            nep.printStackTrace();
            Log.d(TAG, "Null Pointer Exception inside loadData() body " + nep);
        }
    }

Вот результат logcat

2020-05-10 15:00:42.998 5008-5008/com.kppnbandungi.plkbi W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.kppnbandungi.plkbi.Layanan.getNama()' on a null object reference
2020-05-10 15:00:43.002 5008-5008/com.kppnbandungi.plkbi D/a: Null Pointer Exception inside loadData() body java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.kppnbandungi.plkbi.Layanan.getNama()' on a null object reference
2020-05-10 15:00:43.003 5008-5008/com.kppnbandungi.plkbi W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.kppnbandungi.plkbi.Layanan.getNama()' on a null object reference
2020-05-10 15:00:43.005 5008-5008/com.kppnbandungi.plkbi D/a: Null pointer message: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.kppnbandungi.plkbi.Layanan.getNama()' on a null object reference
2020-05-10 15:00:43.936 5008-5008/com.kppnbandungi.plkbi D/a: Check if object not null inside for loops, the value is GU
2020-05-10 15:00:43.948 5008-5008/com.kppnbandungi.plkbi D/a: Check if object not null inside for loops, the value is LS
2020-05-10 15:00:43.956 5008-5008/com.kppnbandungi.plkbi D/a: Check if object not null inside for loops, the value is UP
2020-05-10 15:00:43.956 5008-5008/com.kppnbandungi.plkbi D/a: Check if object not null from OUTSIDEFOR, the value is UP


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