我正在尝试在侧视图寻呼机中启动日期选择器片段表单片段,并在edittext中显示日期选择器的结果。
public class TabEventDetails extends android.support.v4.app.Fragment {
EditText txt_eventName;
EditText txt_eventDescription;
EditText txt_eventfronDate;
FragmentCommunicator communicator;
public TabEventDetails() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.tab_eventdetail, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
communicator = (FragmentCommunicator)getActivity();
txt_eventName = (EditText)getActivity().findViewById(R.id.txtEventName);
txt_eventDescription = (EditText)getActivity().findViewById(R.id.txt_EventDescription);
txt_eventfronDate = (EditText)getActivity().findViewById(R.id.txt_fromDate);
txt_eventfronDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
communicator.LaunchDatePickerFragment();
}
});
}
public void showDate(String date)
{
Log.d("date" , date);
txt_eventfronDate.setText(date);
}
}
当我尝试从片段的外侧调用显示日期方法时,我收到错误NullPointerException。
我在View pager中使用此片段。
我们下面的堆栈跟踪05-18 16:30:58.759 10322-10322/com.expense.expensecalculator E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.expense.expensecalculator.Fragments.Tabs.TabEventDetails.showDate(TabEventDetails.java:65)
at com.expense.expensecalculator.Activity.ContainerActivity.setDate(ContainerActivity.java:82)
at com.expense.expensecalculator.Fragments.DatePickerFragment.onDateSet(DatePickerFragment.java:62)
at android.app.DatePickerDialog.tryNotifyDateSet(DatePickerDialog.java:199)
at android.app.DatePickerDialog.onClick(DatePickerDialog.java:154)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:185)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5283)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
在onCreateView方法上进行初始化,如下所示:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.tab_eventdetail, container, false);
txt_eventName = (EditText)v.findViewById(R.id.txtEventName);
txt_eventDescription = (EditText)v.findViewById(R.id.txt_EventDescription);
txt_eventfronDate = (EditText)v.findViewById(R.id.txt_fromDate);
return v;
}