Android onItemSelected Null PointerException

时间:2013-07-01 17:12:14

标签: android nullpointerexception

即使我无法从我的测试中复制,我也能从我的Android应用程序的用户那里得到这个错误消息。任何帮助是极大的赞赏。这是logcat:

java.lang.NullPointerException
at com.janzen.bodybuildingdiet.MealOne$4.onItemSelected(MealOne.java:2172)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:882)
at android.widget.AdapterView.selectionChanged(AdapterView.java:865)
at android.widget.AdapterView.checkSelectionChanged(AdapterView.java:1017)
at android.widget.AdapterView.handleDataChanged(AdapterView.java:999)
at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:179)

这是代码片段(第2172行是“setTextColor(Color.WHITE);:

spinnerCarbs.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {public void onItemSelected(AdapterView<?> parentView,
                        View selectedItemView, int position, long id) {
                    String selection = parentView.getItemAtPosition(
                            position).toString();

                    ((TextView) spinnerCarbs.getChildAt(0))
                            .setTextColor(Color.WHITE);
                    ((TextView) spinnerCarbs.getChildAt(0))
                            .setGravity(Gravity.CENTER);

                    carbsSelection = selection;
                    carbsSpinnerPosition = spinnerCarbs
                            .getSelectedItemPosition();
                    savePrefs("CARBS", carbsSpinnerPosition);
                }

2 个答案:

答案 0 :(得分:4)

spinnerCarbs为null,或者为空,因此其第0个子元素为null。如果你想要进行防御性编码,请执行

                if(spinnerCarbs != null && spinnerCarbs.getChildAt(0) != null){
                    ((TextView) spinnerCarbs.getChildAt(0))
                            .setTextColor(Color.WHITE);
                    ((TextView) spinnerCarbs.getChildAt(0))
                            .setGravity(Gravity.CENTER);
                }

答案 1 :(得分:0)

你可以尝试

if(spinnerCarbs == null) return;

然后你们其余的人编码