2015-09-07 2 views
0

Этот вопрос является странным, поэтому, пожалуйста, старайтесь нести со мной.Spinner adapter Null Pointer Exception

Я вручную портировал Android-проект из Android Studio 1.3.2 в Eclipse Mars 4.5.0.

После этого (казалось бы, успешного) порта, я столкнулся со следующей проблемой: Мои пользовательские адаптеры-счетчики перестали работать.

Это кусок кода, где происходит сбой в адаптере пользовательских вращателя:

@Override 
public View getDropDownView(int position, View convertView, 
          ViewGroup parent) { 
    if (convertView == null) { 
     convertView = View.inflate(getContext(), R.layout.spinner_dropdown_item, null); 
    } 
    TextView label = (TextView) convertView.findViewById(R.id.spinner_text); 
    label.setText(getItem(position).getName()); 

    return label; 
} 

При запуске отладчика, ни один человек не откажет заявление. Проверка метки переменная, текст установлен, все в порядке и денди. Однако, когда функция заканчивается, я получаю эту трассировку стека:

09-07 15:14:57.888: E/AndroidRuntime(5650): FATAL EXCEPTION: main 
09-07 15:14:57.888: E/AndroidRuntime(5650): Process: com.example.objectives, PID: 5650 
09-07 15:14:57.888: E/AndroidRuntime(5650): java.lang.NullPointerException 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.widget.TextView.checkForRelayout(TextView.java:8014) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.widget.TextView.setText(TextView.java:4864) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.widget.TextView.setText(TextView.java:4717) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.widget.TextView.setText(TextView.java:4692) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at com.example.objectives.adapters.StageSpinnerAdapter.getDropDownView(StageSpinnerAdapter.java:44) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getDropDownView(AppCompatSpinner.java:624) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.support.v7.widget.AppCompatSpinner$DropDownAdapter.getView(AppCompatSpinner.java:620) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.support.v7.internal.widget.ListViewCompat.measureHeightOfChildrenCompat(ListViewCompat.java:290) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.support.v7.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1200) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.support.v7.widget.ListPopupWindow.show(ListPopupWindow.java:584) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.support.v7.widget.AppCompatSpinner$DropdownPopup.show(AppCompatSpinner.java:766) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.support.v7.widget.AppCompatSpinner.performClick(AppCompatSpinner.java:424) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.view.View$PerformClick.run(View.java:19422) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.os.Handler.handleCallback(Handler.java:733) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.os.Handler.dispatchMessage(Handler.java:95) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.os.Looper.loop(Looper.java:136) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at android.app.ActivityThread.main(ActivityThread.java:5479) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at java.lang.reflect.Method.invoke(Method.java:515) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
09-07 15:14:57.888: E/AndroidRuntime(5650):  at dalvik.system.NativeStart.main(Native Method) 

Ok так актуальная проблема заключается в следующем: Эта ошибка появляется только в Затмении, а не Android Studio.

Другие детали, которые могут считаться полезными: MinSdk: 15, targetSdk: 23, maxSdk: 23;

Я отправлю любые и все другие детали, которые могут потребоваться.

Большое спасибо.

Edit: Line 44:

label.setText(getItem(position).getName()); 
+0

Вам не нужно возвращать представление вместо метки? –

+0

Что такое линия 44? Вы пытались вернуть convertView вместо метки? –

+0

Почему вы возвращаете метку вместо convertView? – Pavan

ответ

0

Я думаю, что его связано с "convertView" здесь:

if (convertView == null) { 
     convertView = View.inflate(getContext(), R.layout.spinner_dropdown_item, null); 
    } 
TextView label = (TextView) convertView.findViewById(R.id.spinner_text); 

метка TextView вы получите его на самом деле исходит от предыдущего convertView ,

, если вы избавитесь от нулевой проверки для convertView и создадите новый convertView, это будет нормально