【问题标题】:How to get datepicker properties from dialogfragment如何从对话框片段中获取日期选择器属性
【发布时间】:2015-06-26 10:37:48
【问题描述】:

你好,我有这个代码

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);

为什么会崩溃?

【问题讨论】:

  • 请添加您的 logcat 输出
  • 那个 date_picker 在哪里?
  • date_picker 在 date_time_picker.xml 中

标签: android datepicker


【解决方案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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2014-01-14
    相关资源
    最近更新 更多