我正在尝试在片段中使用日期选择器,但在findViewId中显示错误。我使用了微调器的视图,但我无法将它用于设置日期功能。任何人都可以帮助我,因为我需要设置日期和用户的日期。我是安道尔工作室的新手。我对Java有所了解,但对于Android来说我是全新的。
public class Statement extends Fragment implements DatePickerDialog.OnDateSetListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//return inflater.inflate(R.layout.fragment_statement, container, false);
View v = inflater.inflate(R.layout.fragment_statement, container, false);
String [] values =
{"Time at Residence","Under 6 months","6-12 months","1-2 years","2-4 years","4-8 years","8-15 years","Over 15 years",};
Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);
return v;
}
public void datePicker(View view){
DatePickerFragment fragment = new DatePickerFragment();
fragment.show(getActivity().getFragmentManager(),"date");
}
public void setDate(final Calendar calendar){
final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
((TextView) findViewById(R.id.showDate).setText(dateFormat.format(calendar.getTime())));
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar cal = new GregorianCalendar(year,monthOfYear,dayOfMonth);
setDate(cal);
}
public static class DatePickerFragment extends DialogFragment {
@Override
public Dialog onCreateDialog (Bundle savedInstanceState){
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);
return new DatePickerDialog(getActivity(),(DatePickerDialog.OnDateSetListener)getActivity(),year,month,day);
}
}
}
这是我得到的错误
12-19 10:17:16.906 1311-1311/com.test.datepicker E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test.datepicker, PID: 1311
java.lang.ClassCastException: com.test.datepicker.NavigationActivity cannot be cast to android.app.DatePickerDialog$OnDateSetListener
at com.test.datepicker.Statement$DatePickerFragment.onCreateDialog(Statement.java:80)
at android.app.DialogFragment.getLayoutInflater(DialogFragment.java:398)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1082)
at android.app.BackStackRecord.run(BackStackRecord.java:833)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:452)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
答案 0 :(得分:0)
您必须初始化TextView
中的onCreateView
并将该变量用于setText
。请参阅下面的代码,
TextView output;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_statement, container, false);
...
Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
output = (TextView) v.findViewById(R.id.showDate);
...
return v;
}
public void setDate(final Calendar calendar){
final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
output.setText(dateFormat.format(calendar.getTime()));
}
答案 1 :(得分:0)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_flight, container, false);
depDate = (TextView) root.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");
}
});
return root;
}