В моем проекте я использую this library, DatePickerDialog, вместе с HoloEverywhere и несколькими другими небольшими библиотеками. Моя проблема в том, что я получаю исключение NullPointerException, когда пытаюсь создать этот диалог только на 2.3.3 устройствах.findViewById в DialogFragment возвращает null на 2.3.3 устройства
Странно, однако, что, когда я использую эту библиотеку и создаю диалог с тем же кодом в других проектах (например, демонстрацию HoloEverywhere), он отлично работает на всех устройствах. Я создаю DatePickerDialog с помощью следующего кода из внутри (HoloEverywhere) метод OnClick Activity в:
final DatePickerDialog dpd = DatePickerDialog.newInstance(this, 2013, 5, 16, false);
dpd.setYearRange(2013, 2015);
dpd.show(getSupportFragmentManager(), "datepicker");
Который дает мне следующую ошибку:
08-19 20:55:45.434: E/AndroidRuntime(1330): FATAL EXCEPTION: main
08-19 20:55:45.434: E/AndroidRuntime(1330): java.lang.NullPointerException
08-19 20:55:45.434: E/AndroidRuntime(1330): at com.fourmob.datetimepicker.date.DatePickerDialog.onCreateView(DatePickerDialog.java:203)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.os.Handler.handleCallback(Handler.java:587)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.os.Handler.dispatchMessage(Handler.java:92)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.os.Looper.loop(Looper.java:130)
08-19 20:55:45.434: E/AndroidRuntime(1330): at android.app.ActivityThread.main(ActivityThread.java:3683)
08-19 20:55:45.434: E/AndroidRuntime(1330): at java.lang.reflect.Method.invokeNative(Native Method)
08-19 20:55:45.434: E/AndroidRuntime(1330): at java.lang.reflect.Method.invoke(Method.java:507)
08-19 20:55:45.434: E/AndroidRuntime(1330): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-19 20:55:45.434: E/AndroidRuntime(1330): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-19 20:55:45.434: E/AndroidRuntime(1330): at dalvik.system.NativeStart.main(Native Method)
Класс/линии, упомянутые в StackTrace можно найти here
Надеюсь, этого достаточно информации. Привет, ребята.
Мне кажется, что для этого используется макет - у вас есть - есть ли идентификатор? – g00dy
Все материалы макета выполнены в библиотеке. [См. Здесь] (https://github.com/flavienlaurent/datetimepicker/blob/master/datetimepicker-library/res/layout) для макета и его идентификаторов. Указанный файл макета - date_picker_dialog.xml, но он использует s, поэтому я связал всю папку. –
JohnathanSmithy
Ну, в строке 203 (из LogCat) я вижу этот 'this.mMththAndDayView.setOnClickListener (this);', который является 'this.mMththAndDayView = ((LinearLayout) view.findViewById (R.id.date_picker_month_and_day)); , Ссылка, которую вы мне дали, не содержит этого макета. – g00dy