如何从dialogfragment获取datepicker属性

时间:2015-06-26 10:37:49

标签: android datepicker

你好我有这个代码

public class DateTimePicker extends android.support.v4.app.DialogFragment  {

 public interface DateTimePickerListener {
       // public void onDialogPositiveClick(DialogFragment dialog);
      //  public void onDialogNegativeClick(DialogFragment dialog);
        public void onDialogPositiveClick(android.app.DialogFragment dialog);
        public void onDialogNegativeClick(android.app.DialogFragment dialog);
    }

    // Use this instance of the interface to deliver action events
   DateTimePickerListener mListener;
   DatePicker dp;
   TimePicker tp;
   int year;

   @Override
   public Dialog onCreateDialog(Bundle savedInstanceState) {
       AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
       // Get the layout inflater
       LayoutInflater inflater = getActivity().getLayoutInflater();
       dp = (DatePicker) this.getActivity().findViewById(R.id.date_picker);

     //  tp = (TimePicker) this.getView().findViewById(R.id.time_picker);
       // Inflate and set the layout for the dialog
       // Pass null as the parent view because its going in the dialog layout
       builder.setView(inflater.inflate(R.layout.date_time_picker, null))
       // Add action buttons
              .setPositiveButton(R.string.set, new DialogInterface.OnClickListener() {
                  @Override
                  public void onClick(DialogInterface dialog, int id) {
                      // sign in the user ...

                   year = dp.getDayOfMonth();


                   StringBuilder sb = new StringBuilder();
                   sb.append(year);


           /*  int   day  = dp.getDayOfMonth();
             int   month= dp.getMonth()+1;
             int   year = dp.getYear();

             SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

            Date dt = new Date(day, month, year);

             String formatedDate = sdf.format(dt);*/
              ServiceActivity.tv.setText(sb.toString());
                   Toast.makeText(getActivity().getBaseContext(), "You selected set button ",
                            Toast.LENGTH_LONG).show();
                  }
              })
              .setNegativeButton(R.string.cansel, new DialogInterface.OnClickListener() {
                  public void onClick(DialogInterface dialog, int id) {
                      DateTimePicker.this.getDialog().cancel();
                  }
              });  

       return builder.create();
   }

    // Override the Fragment.onAttach() method to instantiate the DateTimePickerListener
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        // Verify that the host activity implements the callback interface
        try {
            // Instantiate the NoticeDialogListener so we can send events to the host
            mListener = (DateTimePickerListener) activity;
        } catch (ClassCastException e) {
            // The activity doesn't implement the interface, throw exception
            throw new ClassCastException(activity.toString()
                    + " must implement DateTimePickerListener");
        }
    }

    } 

当我点击设置按钮程序崩溃时。我试过了  dp = (DatePicker) this.getView().findViewById(R.id.date_picker);

它崩溃我试过

dp = (DatePicker) this.dialog.findViewById(R.id.date_picker);

它崩溃了为什么会出错?

1 个答案:

答案 0 :(得分:1)

onCreateDialog

中试用此代码
LayoutInflater inflater = LayoutInflater.from(getActivity());
View view = inflater.inflate(R.layout.date_time_picker, null );
dp = (DatePicker) view.findViewById(R.id.datePicker);
builder.setView(view, null))