ошибка счетчика и адаптера: при нулевой ссылке на объект - PullRequest
0 голосов
/ 19 января 2019

Добрый вечер,
так что я не в курсе. Я получаю
java.lang.NullPointerException: попытка вызвать виртуальный метод 'void android.widget.Spinner.setAdapter (android.widget.SpinnerAdapter)' для ссылки на пустой объект
В основном я знаю, что нулевая ссылка на объект означает, что что-то не назначено (Да, я новичок в программировании!).

        Spinner spinner = findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.palWerte, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter); //here the error happens
    spinner.setOnItemSelectedListener(this);

[...]

    @Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
        case R.id.nav_kaz:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new KalorienzählerFragment()).commit();
            break;
        case R.id.nav_kar:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new KalorienrechnerFragment()).commit();
            break;
        case R.id.nav_erp:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new ErnährungsplanFragment()).commit();
            break;
        case R.id.nav_trp:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new TrainingsplanFragment()).commit();
            break;
        case R.id.nav_trh:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new TrainingshilfeFragment()).commit();
            break;
        case R.id.nav_ala:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new AlarmFragment()).commit();
            break;
    }
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Ваш код: "Spinner spinner = findViewById (R.id.spinner1);"

Это должно быть "Spinner spinner = (Spinner) findViewById (R.id.spinner1);"

Или, если он есть во фрагменте

"builder.setView (fragmentView);"

"(Spinner) fragmentView.findViewById (R.id.spinner1);"

Надеюсь, эта помощь

0 голосов
/ 19 января 2019

Похоже, findViewById(R.id.spinner1); возвращается null.Пожалуйста, попробуйте проверить макет в функции setContentView в вашей деятельности, ваш Spinner должен быть определен в макете с идентификатором "@ + id / spinner1"

...