片段中的空视图引用

时间:2018-11-05 06:35:55

标签: java android android-fragments android-viewpager

我的应用程序中有一个Viewpager,其中包含4个片段。我的片段之一有一个公共方法,该方法从微调器返回一个值。

但是有时当我在片段引用上调用该方法时,会得到一个nullpointerexception:

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
    }
}

看起来Spinner参考变量为空,但我不知道为什么以及如何防止它。

顺便说一句,我使用ButterKnife,而且我还将viewpager的屏幕外限制设置为4。

1 个答案:

答案 0 :(得分:0)

在第二行更改为if (isAdded() && generalSettingsFragment != null)

保持跟踪是附加的片段,因此其视图不为空