继承Fragment时奇怪的null引用异常

卡尔斯公司

我有一个带有不同片段的应用程序。每个片段都是一个计算器。为了创建最后一个(PointsPlusCalculatorFragment),我从另一个Fragment继承了它,然后覆盖了更改的方法。我以这种方式应该可以正常工作,但是在中切换视图时会出现null引用异常ViewPager该应用程序的源代码可以在这里找到

为什么会这样?

这是logcat错误:

06-03 12:43:34.900      877-877/cat.company.ppcalc E/MessageQueue-JNI﹕ java.lang.NullPointerException
        at cat.company.ppcalc.fragments.ProPointsCalculatorFragment.SetUnits(ProPointsCalculatorFragment.java:86)
        at cat.company.ppcalc.fragments.ProPointsCalculatorFragment.onSharedPreferenceChanged(ProPointsCalculatorFragment.java:190)
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:475)
        at android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:461)
        at cat.company.ppcalc.MainActivity$2.onPageSelected(MainActivity.java:111)
        at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:567)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)
        at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2015)
        at android.view.View.dispatchTouchEvent(View.java:7706)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
        at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:268)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
        at android.view.View.dispatchPointerEvent(View.java:7886)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3954)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3833)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5602)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5582)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5553)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5682)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:138)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at co
06-03 12:43:34.910      877-877/cat.company.ppcalc E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: cat.company.ppcalc, PID: 877
java.lang.NullPointerException
        at cat.company.ppcalc.fragments.ProPointsCalculatorFragment.SetUnits(ProPointsCalculatorFragment.java:86)
        at cat.company.ppcalc.fragments.ProPointsCalculatorFragment.onSharedPreferenceChanged(ProPointsCalculatorFragment.java:190)
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:475)
        at android.app.SharedPreferencesImpl$EditorImpl.commit(SharedPreferencesImpl.java:461)
        at cat.company.ppcalc.MainActivity$2.onPageSelected(MainActivity.java:111)
        at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:567)
        at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:551)
        at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2015)
        at android.view.View.dispatchTouchEvent(View.java:7706)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
        at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:268)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
        at android.view.View.dispatchPointerEvent(View.java:7886)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3954)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3833)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5602)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5582)
        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5553)
        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5682)
        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
        at android.os.MessageQueue.nativePollOnce(Native Method)
        at android.os.MessageQueue.next(MessageQueue.java:138)
        at android.os.Looper.loop(Looper.java:123)
        at android.app.ActivityThread.main(ActivityThread.java:5017)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.Zygo

这是给出错误的行:

private void SetUnits(View view) {
    String unit= PreferenceManager.getDefaultSharedPreferences(getActivity()).getString("selected_unit","grams");
    String[] unitsValues=getResources().getStringArray(R.array.unitsValues);
    String[] units=getResources().getStringArray(R.array.units);
    int index= Arrays.asList(unitsValues).indexOf(unit);
    String unitName=units[index];
    -- This line -- TextView carbsView = (TextView) view.findViewById(R.id.unitCarbs);
    carbsView.setText(unitName);
    TextView fatView=(TextView) view.findViewById(R.id.unitFat);
    fatView.setText(unitName);
    TextView fibreView=(TextView) view.findViewById(R.id.unitFibre);
    fibreView.setText(unitName);
    TextView proteinView=(TextView) view.findViewById(R.id.unitProtein);
    proteinView.setText(unitName);
    TextView portionView=(TextView) view.findViewById(R.id.unitPortion);
    portionView.setText(unitName);
}

这两个片段使用相同的布局文件。

维斯瓦纳特·莱克希玛南(Viswanath Lekshmanan)

请确保膨胀View的不是Null。(View view)

private void SetUnits(View view)

确保也通过了膨胀视图。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Moq-尝试测试ActionResult时为Null引用异常

来自分类Dev

遍历List <T>时出现Null引用异常

来自分类Dev

遍历StreamReader对象列表时为null引用异常

来自分类Dev

创建空列表时,什么可能导致Null引用异常?

来自分类Dev

Moq-尝试测试ActionResult时为Null引用异常

来自分类Dev

从python中的列表继承时的奇怪行为

来自分类Dev

`NotRegistered`使用多重继承时的异常

来自分类Dev

尽管检查了Null,但Null引用异常

来自分类Dev

游戏对象销毁时unity5中的null引用异常

来自分类Dev

带有EF的LINQ查询中的奇怪的空引用异常

来自分类Dev

LINQ的LEFT JOIN产生NULL引用异常

来自分类Dev

!= Null while 循环中的空引用异常

来自分类Dev

存在异常的继承异常

来自分类Dev

处理奇怪的Null指针异常(与PGraphics有关)

来自分类Dev

对对象的引用返回null(iOS类继承)

来自分类Dev

存在接口和继承时如何设计异常类

来自分类Dev

返回值或null,无null引用异常linq

来自分类Dev

保存裁切图像时出现奇怪的枕头异常

来自分类Dev

JVM崩溃时异常中显示的奇怪路径

来自分类Dev

使用add_cookie时WebDrive中的奇怪异常

来自分类Dev

处理异常时奇怪的嵌套循环行为

来自分类Dev

使用add_cookie时WebDrive中的奇怪异常

来自分类Dev

在PhpStorm中打开数据库时出现奇怪的异常?

来自分类Dev

调用Spring数据方法时抛出奇怪的异常

来自分类Dev

继承QFrame时对vtable的未定义引用

来自分类Dev

使用引用类时继承会导致错误

来自分类Dev

使用多重继承时引用基类属性

来自分类Dev

取消引用char *时出现奇怪的数组/指针行为

来自分类Dev

JS继承的奇怪时刻

Related 相关文章

热门标签

归档