【发布时间】:2015-01-12 00:45:19
【问题描述】:
我正在尝试按照本指南挑选时间:http://developer.android.com/intl/es/guide/topics/ui/controls/pickers.html
但是我收到了这个错误:
01-11 19:37:58.513:E/AndroidRuntime(2419):致命异常:主要 01-11 19:37:58.513: E/AndroidRuntime(2419): java.lang.NullPointerException 01-11 19:37:58.513: E/AndroidRuntime(2419):在 android.app.DialogFragment.show(DialogFragment.java:228) 01-11 19:37:58.513:E/AndroidRuntime(2419):在 iuAndroid.Informe$TimePickerFragment.showTimePickerDialog(Informe.java:126) 01-11 19:37:58.513: E/AndroidRuntime(2419): 在 iuAndroid.Informe$1.onClick(Informe.java:80) 01-11 19:37:58.513: E/AndroidRuntime(2419):在 android.view.View.performClick(View.java:4240) 01-11 19:37:58.513: E/AndroidRuntime(2419):在 android.view.View$PerformClick.run(View.java:17721) 01-11 19:37:58.513:E/AndroidRuntime(2419):在 android.os.Handler.handleCallback(Handler.java:730) 01-11 19:37:58.513:E/AndroidRuntime(2419):在 android.os.Handler.dispatchMessage(Handler.java:92) 01-11 19:37:58.513:E/AndroidRuntime(2419):在 android.os.Looper.loop(Looper.java:137) 01-11 19:37:58.513: E/AndroidRuntime(2419):在 android.app.ActivityThread.main(ActivityThread.java:5103) 01-11 19:37:58.513:E/AndroidRuntime(2419):在 java.lang.reflect.Method.invokeNative(Native Method) 01-11 19:37:58.513:E/AndroidRuntime(2419):在 java.lang.reflect.Method.invoke(Method.java:525) 01-11 19:37:58.513: E/AndroidRuntime(2419):在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 01-11 19:37:58.513: E/AndroidRuntime(2419): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 01-11 19:37:58.513:E/AndroidRuntime(2419):在 dalvik.system.NativeStart.main(Native Method)
我的上课时间选择器:
public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener{
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onTimeSet(final TimePicker view, final int hourOfDay, final int minute) {
// TODO Auto-generated method stub
}
public void showTimePickerDialog(final View v) {
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getFragmentManager(), "timePicker");
}
}
当我这样做时:newFragment.show(getFragmentManager(), "timePicker");
它返回一个 NullPointer..
这是我布局的一部分:
<TextView
android:id="@+id/from_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/from_name"/>
<Button
android:id="@+id/timeFrom"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="2"
android:onClick="showTimePickerDialog"
style="@android:style/Widget.DeviceDefault.Light.Spinner"
/>
<TextView
android:id="@+id/to_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/to_name"/>
<Button
android:id="@+id/timeTo"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="2"
android:onClick="showTimePickerDialog"
style="@android:style/Widget.DeviceDefault.Light.Spinner"
/>
【问题讨论】:
-
您的
iuAndroid.Informe$1.onClick()中有什么内容?由于您似乎有一个类似工厂的非静态方法showTimePickerDialog()(您不应该),您可能在一个初始化错误的对象上调用它。