我们有一名成员报告他无法在我们的DatePickerDialog上设置1970年1月1日之前的日期.这个问题不适合我们.
我已经知道DatePickerDialog没有公开底层DatePicker的setMinDate/setMaxDate函数,所以看起来某种手机制造商特定的修改正在影响minDate/maxDate.
该用户报告说他正在运行2.2 Froyo的Verizon上运行Droid x2.虽然我们认为他对他的设备型号的描述是正确的,但许多用户对操作系统版本感到困惑,所以他可能正在运行2.3.
我试图通过将此主题添加到我的Activity来解决此问题:
<style name="profile_editor_theme">
<item name="android:endYear">2025</item>
<item name="android:startYear">1910</item>
</style>
Run Code Online (Sandbox Code Playgroud)
虽然我的活动中的这个主题具有在我的测试设备上限制DatePickerDialog的预期效果(Galaxy选项卡和原始的Motorola Droid),但它显然对用户没有影响.
这个问题在100%的时间内对我们的用户进行了重复,但在我们自己的设备上正常运行.
任何人都可以解释可能导致这种情况的原因以及如何解决这个问题?
谢谢!
我有一个弹出android.app.DatePickerDialog的活动.
DatePickerDialog dialog = new DatePickerDialog(this, startDateSetListener, start_cal.get(Calendar.YEAR), start_cal.get(Calendar.MONTH), start_cal.get(Calendar.DATE));
Run Code Online (Sandbox Code Playgroud)
我想从DatePickerDialog获取DatePicker视图,以便我可以设置最小和最大日期.API参考说有一个方法getDatePicker,自API 1以来一直存在,但它无效,我的ide不喜欢它.
DatePicker picker = dialog.getDatePicker();
Run Code Online (Sandbox Code Playgroud)
"对于DatePickerDialog类型,方法getDatePicker()未定义"
任何人都知道创建的方法是什么API,或者我如何到达DatePicker来编辑最小/最大日期?
我使用的是API 7,平台2.1.
我正在使用DatePickerDialog,我正在尝试设置最小和最大日期,以便用户只能选择前24小时或接下来24小时内的日期.
这是代码.(请注意,如果在Android 3.0或更高版本上运行,它只会尝试设置最小/最大范围.)
private void showDatePickerDialog() {
DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthOfYear);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
onCalendarChanged();
}
};
DatePickerDialog dialog = new DatePickerDialog(this,
listener,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
setDatePickerDialogRange(dialog);
dialog.show();
}
@SuppressLint("NewApi")
private void setDatePickerDialogRange(DatePickerDialog dialog) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
DatePicker picker = dialog.getDatePicker();
long oneDayMilliseconds = 24 * 60 * 60 * 1000;
long nowMilliseconds = new Date().getTime();
long minDate = nowMilliseconds …Run Code Online (Sandbox Code Playgroud) 我正在用一个DialogFragment打开一个DatePickerDialog
public class DatePickerFragment extends DialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
DatePickerDialog DatePickerDialog = new DatePickerDialog(getActivity(), (ProfileCreationActivity)getActivity(), year, month, day);
return DatePickerDialog;
}
Run Code Online (Sandbox Code Playgroud)
我正在看日历外观,我更喜欢旋转外观.
我试过了:
datePickerDialog.getDatePicker().setCalendarViewShown(false);
Run Code Online (Sandbox Code Playgroud)
和
datePickerDialog.getDatePicker().setLayoutMode(1);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
请注意,我希望微调器查找一个活动,但我希望其他活动的日历视图.所以我无法改变整个应用程序的风格.我需要一个活动的自定义样式.
我发现DatePicker(Dialog)非常令人困惑......当设置setMinDate()时...显示的日历真的"视觉上禁用"传递日期(使它们变灰)但这些日期仍然可供选择!我想用户阻止这样做.理想的方法是使通过的日期不可点击/不可选.如果不可能,至少要抓住这个事件(哪一个?onDateChanged?,onSelected?...)并保留一条消息并禁用OK按钮,直到用户选择一个有效的日期.
不幸的是,datepicker(对话框)没有onChangedListener(实际上它有但没有setter).所以我得到的唯一事件是按下OK按钮.为时已晚.
这是我的代码
dateTextView = (TextView) view.findViewById(R.id.createOrder_date);
dateTextView.setText(R.string.createOrder_time_now);
dateTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Calendar calendarNow = Calendar.getInstance();
final int yearNow = calendarNow.get(Calendar.YEAR);
final int monthNow = calendarNow.get(Calendar.MONTH);
final int dayNow = calendarNow.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(CreateOrderFragment.this.getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
if (calendar.before(calendarNow)) {
Toast.makeText(CreateOrderFragment.this.getActivity(), getResources().getString(R.string.createOrder_datePicker_selectFutureDate), Toast.LENGTH_SHORT).show();
view.updateDate(yearNow, monthNow, dayNow);
calendar = calendarNow;
}
SimpleDateFormat sdf = …Run Code Online (Sandbox Code Playgroud) android android-datepicker datepickerdialog android-5.0-lollipop
我使用的默认Android DatePickerDialog包含android.widget.DatePicker.
有人知道如何禁用或使某些日期无法选择吗?
我知道DatePicker允许setMinDate(),setMaxDate()但它不允许在中间禁用特定日期.
例如,在这张照片上想要禁用日期18,26等:
我试图通过以编程方式更改和值来切换到DatePicker中的日历到微调器模式,但在API 24中,Android Studio显示警告.setSpinnersShownsetCalendarViewShowndeprecated
如果没有API API中的XML设置值,我可以通过编程方式将DatePicker从日历设置为spinner模式的替代方法是什么.谢谢.
单击时我有一个 EditText,它应该打开 DatePickerDialog。但在某些设备中,它会随机崩溃。在 Crashlytics 中,它显示它在一些 android 版本 8 和一些版本 9 的设备中崩溃。请告诉我我做错了什么。
对于 DatePicker,我正在设置用户可以选择的最小和最大日期。
DatePickerDialog dialog = new DatePickerDialog(mContext, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
inputFormat.setTimeZone(TimeZone.getTimeZone("IST"));
Date date = new Date();
try {
date = inputFormat.parse("2019-01-13T13:00:00Z"); // this is getting from server
} catch (ParseException e) {
e.printStackTrace();
}
Calendar minCal = Calendar.getInstance();
minCal.setTime(date);
dialog.getDatePicker().setMinDate(minCal.getTimeInMillis());
dialog.getDatePicker().setMaxDate(System.currentTimeMillis());
// dialog.getDatePicker().setCalendarViewShown(false);
dialog.show();
Run Code Online (Sandbox Code Playgroud)
这是我收到的崩溃消息。
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.SimpleMonthView.getMonthHeight()' on a null object reference
at android.widget.DayPickerView.onLayout(DayPickerView.java:230) …Run Code Online (Sandbox Code Playgroud) 我正在和BaseAdapter班级一起工作.我想在其中显示DatePickerDialog.当我使用时,showDialog(DATE_DIALOG_ID); 我收到错误.
请指导我这个.
package com.OrganisemeePhone.adapter;
import java.util.ArrayList;
import java.util.Vector;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.OpenableColumns;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.DatePicker;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class TaskFilterAdapter extends BaseAdapter {
String date, month, year,setdueDate;
//int dateFormat;
DatePickerDialog.OnDateSetListener dateListener;
int myYear, myMonth, myDay;
int dateFormat; …Run Code Online (Sandbox Code Playgroud) 我希望能够在用户开始更改时检测到datepicker上的更改.但是,我不想使用datrpickerdialog.有没有人知道为什么在更改datepicker上的日期时onDateSet(DatePicker arg0,int arg1,int arg2,int arg3)不会触发?
我对此表示高度赞赏.干杯
这是我的代码的简化版本:
public class AddItem extends Activity implements OnDateChangedListener,OnDateSetListener{
DatePicker start ;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entryelements);
start = (DatePicker) findViewById(R.id.start);
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
" thiv view"+year,
Toast.LENGTH_LONG).show();
Log.v("indatechange", "ok");
}
@Override
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),
" thiv view"+arg0,
Toast.LENGTH_LONG).show();
Log.v("indatechange", "ok");
}
Run Code Online (Sandbox Code Playgroud)
}