我的应用程序中有一个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。
答案 0 :(得分:0)
在第二行更改为if (isAdded() && generalSettingsFragment != null)
保持跟踪是附加的片段,因此其视图不为空