1

在我的項目中,我使用了this library,DatePickerDialog和HoloEverywhere以及其他一些小視圖庫。我的問題是,當我嘗試僅在2.3.3設備上創建此對話框時,我得到NullPointerException。DialogFragment中的findViewById在2.3.3設備上返回null

然而,奇怪的是,當我使用這個庫並在其他項目中創建與完全相同的代碼的對話框(例如HoloEverywhere演示)時,它在所有設備上都能正常工作。 我用下面的代碼從(HoloEverywhere)活動的onClick方法中創建DatePickerDialog:

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) 

類/線可以找到here

希望這是足夠的信息。乾杯。

+0

在我看來,這裏有一個佈局 - 你有它 - 有一個ID? – g00dy

+0

所有佈局的東西都在圖書館裏完成。 [見這裏](https://github.com/flavienlaurent/datetimepicker/blob/master/datetimepicker-library/res/layout)佈局和它的ID。提到的佈局文件是date_picker_dialog.xml,但它使用了 s,所以我鏈接了整個文件夾。 – JohnathanSmithy

+0

好了,關於線203(來自logcat的)我看到這個'this.mMonthAndDayView.setOnClickListener(本);',它是'this.mMonthAndDayView =((的LinearLayout)view.findViewById(R.id.date_picker_month_and_day));' 。您給我的鏈接不包含此佈局。 – g00dy

回答

1

原來另一個庫我還實施(Android的betterpickers)也包含/res/date_picker_dialog.xml。不知何故,這導致薑餅只有混亂(奇怪,但真實)。它通過重命名date_picker_dialog.xml文件來解決。

+0

OMG我一直在尋找這麼久,我嘗試了很多東西:S感謝很多重命名作品:D – Javier