设置Datepicker对话框取消按钮时,下面的代码有什么错误

时间:2017-12-18 17:00:49

标签: android datepicker

获取所需的类型错误。我试图为我的日期选择器对话框设置取消监听器,我无法做到这一点。

DatePickerDialog datePickerDialog = new DatePickerDialog(this, objDate, Integer.parseInt(getYear),
                                Integer.parseInt(monthNum) - 1, Integer.parseInt(getDay)).setButton(DialogInterface.BUTTON_NEGATIVE,
                                getString(R.string.cancel),
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int which) {
                                        // do stuff
                                    }
                                });

2 个答案:

答案 0 :(得分:0)

试试这个

MainActivity:

    import android.app.AlertDialog;
    import android.app.DatePickerDialog;
    import android.app.Dialog;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.View;
    import android.widget.Button;
    import android.widget.DatePicker;
    import android.widget.RelativeLayout;
    import android.app.DialogFragment;
    import android.widget.TextView;
    import android.widget.Toast;

    import java.text.DateFormat;
    import java.util.Calendar;
    import java.util.Date;


    public class MainActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            // Get the widgets reference from XML layout
            final RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl);
            Button btn = (Button) findViewById(R.id.btn);

            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Initialize a new date picker dialog fragment
                    DialogFragment dFragment = new DatePickerFragment();

                    // Show the date picker dialog fragment
                    dFragment.show(getFragmentManager(), "Date Picker");
                }
            });
       }

的DatePicker:

public static class DatePickerFragment extends DialogFragment
                implements DatePickerDialog.OnDateSetListener{

            @Override
            public Dialog onCreateDialog(Bundle savedInstanceState){
                final Calendar calendar = Calendar.getInstance();
                int year = calendar.get(Calendar.YEAR);
                int month = calendar.get(Calendar.MONTH);
                int day = calendar.get(Calendar.DAY_OF_MONTH);

                DatePickerDialog dpd = new DatePickerDialog(getActivity(),
                        AlertDialog.THEME_HOLO_LIGHT,this,year,month,day);

                // Return the DatePickerDialog
                return  dpd;
            }

            public void onDateSet(DatePicker view, int year, int month, int day){
                // Do something with the chosen date
            }

            // Set a Listener for Dialog Cancel button click event
            /*
                onCancel(DialogInterface dialog)
                    This method will be invoked when the dialog is canceled.
             */
            public void onCancel(DialogInterface dialog){
                // Send a message to confirm cancel button click
                Toast.makeText(getActivity(),"Date Picker Canceled.", Toast.LENGTH_SHORT).show();
            }
        }
    }

答案 1 :(得分:0)

您的代码的问题在于您正在创建对话框,并在此设置按钮之后,并将其结果分配给 DatePickerDialog 对象。但是 setButton 会返回void。所以你不能分配给 DatePickerDialog 。把这些分开:

DatePickerDialog datePickerDialog = new DatePickerDialog(this, objDate, Integer.parseInt(getYear),
                                    Integer.parseInt(monthNum) - 1, Integer.parseInt(getDay));

datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
                                    getString(R.string.cancel),
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int which) {
                                            // do stuff
                                        }
                                    });