【问题标题】:How to show a DatePicker inside a AlerdDialog in Android Studio如何在 Android Studio 的 AlerdDialog 中显示 DatePicker
【发布时间】:2021-06-14 15:53:04
【问题描述】:

我需要在 Android Studio 的 AlerdDialog 中显示 DatePicker Snipper 类型,但我的代码仅显示 de AlertDialog 但 DatePickert 没有,为什么?

这是我的代码:

public class MainActivity extends AppCompatActivity {
DatePicker myDatePicker;
Button button;
TextView mCalendario;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button) findViewById(R.id.button);
    mCalendario  = (TextView) findViewById(R.id.tv_fechaNacimiento);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.datepicker, null, false);
            myDatePicker = view.findViewById(R.id.datePicker);
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this,R.style.MyDialogTheme);
            alertDialog.setTitle("Seleccione la Fecha");

            alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @TargetApi(11)
                public void onClick(DialogInterface dialog, int id) {
                    int month = myDatePicker.getMonth() + 1;
                    int day = myDatePicker.getDayOfMonth();
                    int year = myDatePicker.getYear();
                    mCalendario.setText("Fecha :" + day + "/" + month + "/" + year);
                    dialog.cancel();
                }
            });

            alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                }
            });
            AlertDialog customAlertDialog = alertDialog.create();
            customAlertDialog.show();
        }
    });
}

}

【问题讨论】:

  • 我猜 'view ' 是包含 DatePicker 的自定义视图?如果是这种情况,您必须调用 alertDialog.setView(view);也可以使用 view.findViewById 来获取日期选择器

标签: android datepicker android-alertdialog


【解决方案1】:

您可以使用此代码

DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
                          int dayOfMonth) {
        // TODO Auto-generated method stub
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, monthOfYear);
        calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        updateDateLabel();
    }

};

TimePickerDialog.OnTimeSetListener time = new TimePickerDialog.OnTimeSetListener() {
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
        calendar.set(Calendar.MINUTE, minute);
        updateTimeLabel();
    }
};

datePick.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new DatePickerDialog(AddRecordActivity.this, date, calendar
                .get(Calendar.YEAR), calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DAY_OF_MONTH)).show();
    }
});

timePick.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        new TimePickerDialog(AddRecordActivity.this, time,
                calendar.get(Calendar.DAY_OF_YEAR),
                calendar.get(Calendar.MINUTE),
                false).show();
    }
});

以及用于更新文本视图中的日期和时间

private void updateTimeLabel() {
    String myFormat = "hh:mm aa"; //In which you need put here
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());

    timeText.setText(sdf.format(calendar.getTime()));
}

// set current date in time picker
private void updateDateLabel() {
    String myFormat = "dd-MMM-yyyy"; //In which you need put here
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());

    dateText.setText(sdf.format(calendar.getTime()));
}

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多