【发布时间】:2016-04-05 09:38:47
【问题描述】:
我有一个带有 TextView 的片段。单击 TextView 时,我想在不同的片段中调用 DatePicker,并且所选日期应显示在前片段的 TextView 上。
但是,我收到以下错误。
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
at com.example.vkrishnakumar.finallogin.FlightFragment.onCreate(FlightFragment.java:34)
我点击以下链接以供参考。 Implementing DatePicker in Fragment
这是我的片段代码,其中包含一个 TextView。
import android.support.v4.app.DialogFragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class FlightFragment extends Fragment {
private TextView depDate;
public FlightFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
depDate = (TextView) getView().findViewById(R.id.book_f_dep);
depDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment = new SelectDateFragment();
newFragment.show(getFragmentManager(), "DatePicker");
}
});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_flight, container, false);
}
}
这是在 FlightFragment 中使用的 SelectDateFragment。
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.widget.DatePicker;
import android.widget.TextView;
import java.util.Calendar;
public class SelectDateFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
public SelectDateFragment() {
// Required empty public constructor
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, mm+1, dd);
}
public void populateSetDate(int year, int month, int day) {
TextView t= (TextView)getView().findViewById(R.id.book_f_dep);
t.setText(month + "/" + day + "/" + year);
}
}
【问题讨论】:
-
R.id.book_f_dep为空。发布您设置 id 的片段的代码 -
TextView t= (TextView)getView().findViewById(R.id.book_f_dep);的问题 -
将getFragmentManager()替换为getActivity().getFragmentManager()
标签: java android android-fragments datepicker