如何从DialogFragment获取日期选择器属性

3

你好,我有这段代码

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
请添加您的日志输出 - dave
那个日期选择器在哪里? - Carlo Moretti
date_picker 在 date_time_picker.xml 文件中。 - ververicka
1个回答

1
在onCreateDialog中尝试此代码:

<code>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))
</code>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接