пустая ссылка на фрагмент - PullRequest
0 голосов
/ 05 ноября 2018

У меня в приложении есть просмотрщик с 4 фрагментами. Один из моих фрагментов имеет открытый метод, который возвращает значение из счетчика.

Но иногда, когда я вызываю метод для ссылки на фрагмент, я получаю нулевое исключение:

Attempt to invoke virtual method 'java.lang.Object android.widget.Spinner.getSelectedItem()' on a null object reference

И это метод, который я вызываю на фрагменте:

public String getCategoryId() {
    if (spVendorCategories.getSelectedItem() != null) {
        String categoryId = 
            ((VendorCategory) spVendorCategories.getSelectedItem()).getId();
            return categoryId;
    }

    return null;
}

Сбой происходит во второй строке.

Я создаю фрагмент в своей деятельности в onCreate:

GeneralSettingsFragment generalSettingsFragment = GeneralSettingsFragment.newInstance(generalSettings);

А потом я получаю значение в методе события onClick:

@OnClick(R.id.save_vendor_settings_button)
void onSaveVendorSettingsButtonClick() {
    if (generalSettingsFragment != null) {
        String categoryId = generalSettingsFragment.getCategoryId();
        // rest of the code
    }
}

Похоже, справочная переменная счетчика обнуляется, но я не знаю, почему и как это предотвратить.

Кстати, я использую ButterKnife, и я также устанавливаю ограничение для экранной страницы моего viewpager на 4.

1 Ответ

0 голосов
/ 05 ноября 2018

В этой 2-й строке изменить на if (isAdded() && generalSettingsFragment != null)

Сохранить отслеживание, фрагмент прикреплен, поэтому его вид не равен нулю

...