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

问题描述 投票:0回答:2

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

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
                                    }
                                });
android datepicker
2个回答
0
投票

试试这个

主要内容:

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

日期选择器:

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

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
                                        }
                                    });
© www.soinside.com 2019 - 2024. All rights reserved.