空指针异常编辑文本

时间:2015-05-18 10:37:49

标签: android

我正在尝试在侧视图寻呼机中启动日期选择器片段表单片段,并在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)

1 个答案:

答案 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;
}