Java 如何从DatePickerFragment调用视图
日志:Java 如何从DatePickerFragment调用视图,java,android,nullpointerexception,rootview,Java,Android,Nullpointerexception,Rootview,日志: package org.jaberrio.personai2; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; import android.os.Bundle; import android.widget.DatePicker; import android.widget.
package org.jaberrio.personai2;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.TextView;
import java.util.Calendar;
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
DataBaseManager dataBaseManager = new DataBaseManager();
String date = String.valueOf(month) + "/" + String.valueOf(day) + "/" + String.valueOf(year);
dataBaseManager.tempSaveCurrentEvent(DataBaseManager.FieldTypes.DUE_DATE,date, getActivity().getApplicationContext());
TextView dueDate = (TextView)view.getRootView().findViewById(R.id.dueDate);
dueDate.setText(dataBaseManager.tempGetCurrentEvent(DataBaseManager.FieldTypes.DUE_DATE,getActivity().getApplicationContext()));
}
}
我正在调用dueDate.setText(),但它返回null。我调用了view.getRootView(),因为我在DatePicker的视图中,因此它应该返回包含我的dueDate TextView的视图。我还可以从调用DatePickerFragment的方法传递视图,但我不知道如何传递。我猜调用getRootView()时DatePicker视图不会返回包含R.id.dueDate的视图。提前感谢。您是否尝试过调试代码?您是否检查了哪些变量是
null
?查看SO.I know的数千个“How to debug a NPE”线程的可能副本dueDate为null,因为某种原因TextView dueDate=(TextView)view.getRootView().findViewById(R.id.dueDate);未设置其值,但我不知道这是为什么调用view.getRootView().findViewById(R.id.dueDate);应该像程序的其他部分一样工作。然而,我相信空值与我从日期选择器视图调用它有关。
06-23 19:04:05.451 13931-13931/org.jaberrio.personai2 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: org.jaberrio.personai2, PID: 13931
java.lang.NullPointerException
at org.jaberrio.personai2.DatePickerFragment.onDateSet(DatePickerFragment.java:36)
at android.app.DatePickerDialog.tryNotifyDateSet(DatePickerDialog.java:148)
at android.app.DatePickerDialog.onClick(DatePickerDialog.java:116)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)