当我更改日期时,OnDateSetListener()不会被调用。偶数setMinDate(day);行不起作用。我认为由于某种原因DatePickerDialog尚未注册OnDateSetListener()。但无法弄清楚。我已将对话框和侦听器都声明为全局。
private DatePickerDialog datePicker;
private DatePickerDialog.OnDateSetListener dateListener;
Run Code Online (Sandbox Code Playgroud)
代码:
// Create dialogs for datePicker
private void createDatePicker() {
Calendar calendar = Calendar.getInstance(Locale.getDefault());
int day = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);
datePicker = new DatePickerDialog(this, dateListener, year, month, day);
datePicker.getDatePicker().setMinDate(day);
dateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Log.d(TAG, "Date changed.");
}
};
}
private void setEditTextListeres() {
myEditText.setOnFocusChangeListener(new OnFocusChangeListener() { …Run Code Online (Sandbox Code Playgroud) 出于一些奇怪的原因,当我单击正面按钮作为DatePickerDialog的一部分时,作为DateSetListener的一部分的onDateSet方法不会仅在SAMSUNG设备上被调用.
这是我在做的事情:
DateSetListener _datePickerDialogCallback = new DateSetListener();
DatePickerDialog _datePickerDialog = new DatePickerDialog(context, _datePickerDialogCallback, year, month, days);
_datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, StringUtil.getString(R.string.command_ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
_done = true;
}
});
_datePickerDialog.show();
private class DateSetListener implements DatePickerDialog.OnDateSetListener {
public void onDateSet(DatePicker view, int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE),
calendar.get(Calendar.SECOND));
if (_done) {
_view.setText(formatDate(calendar.getTime()));
}
}
}
Run Code Online (Sandbox Code Playgroud)
关于为什么会发生这种情况的任何建议都将受到赞赏.请.请注意,这仅适用于SAMSUNG DEVICES
我正在使用MaterialDateTimePicker.我想禁用每个月的特定工作日(如星期日).它在这篇文章中提到我们可以使用这个库来做到这一点,但how to disable particular weekdays?我当然可以使用可用的短代码来限制月数,但我不想限制几个月的数量,只是从选择中禁用工作日.
public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {
private TextView dateTextView;
private CheckBox modeDarkDate;
private CheckBox vibrateDate;
private CheckBox dismissDate;
private CheckBox limitDates;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Find our View instances
dateTextView = (TextView)findViewById(R.id.date_textview);
Button dateButton = (Button)findViewById(R.id.date_button);
modeDarkDate = (CheckBox)findViewById(R.id.mode_dark_date);
vibrateDate = (CheckBox) findViewById(R.id.vibrate_date);
dismissDate = (CheckBox) findViewById(R.id.dismiss_date);
limitDates = (CheckBox) findViewById(R.id.limit_dates);
// check if picker mode is specified in Style.xml
modeDarkDate.setChecked(Utils.isDarkTheme(this, modeDarkDate.isChecked())); …Run Code Online (Sandbox Code Playgroud) 我想在DatePickerDialog中禁用今天日期的所有Next(after)日期.
我使用下面的代码来创建DatePickerDialog:
Calendar calendar = Calendar.getInstance();
mYear = calendar.get(Calendar.YEAR);
mMonth = calendar.get(Calendar.MONTH);
mDay = calendar.get(Calendar.DAY_OF_MONTH);
//OnDateSetListener
private DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int year, int monthOfYear, int dayOfMonth) {
calendar.set(year, monthOfYear, dayOfMonth);
String currentDate = date_format.format(calendar.getTime());
...
}
};
//Create DatePickerDialog here
protected Dialog onCreateDialog(int id) {
if (id == 999) {
DatePickerDialog dpDialog = new DatePickerDialog(getContext(), myDateListener, mYear, mMonth, mDay);
return dpDialog;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
请建议我必须做什么来禁用datepicker对话框中的所有先前日期.
android datepicker android-datepicker datepickerdialog android-studio
我想将DatePickerDialog限制为明天的最小值.当我把下面显示的代码放入时,限制就有效了.但是,包含日期的标题文本显示为标题.我怎样才能解决这个问题?
这是我的代码:
Calendar tempDate = Calendar.getInstance();
tempDate.add(Calendar.DAY_OF_MONTH, 1);
toDatePickerDialog.getDatePicker().setMinDate(tempDate.getTimeInMillis());
Run Code Online (Sandbox Code Playgroud)
和图像:
我的应用程序使用 MaterialDatePicker。我想创建一个类,除其他数据外,还将存储 MaterialDatePicker 中的日期。\n我有一些问题:
\n这是我与 MaterialDatePicker 的活动代码
\npublic class NewEvent extends AppCompatActivity {\nTextInputEditText etDate, etEventId;\nAutoCompleteTextView etType, etNotif;\nMaterialToolbar toolbarNE;\nSharedPreferences sharedPreferences;\n\nprivate static final String TAG = "myLogs";\nstatic final String newEv = "newEv";\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.new_event);\n final FragmentManager fragmentManager = getSupportFragmentManager();\n final FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();\n\n final FirstFragment fragment1 = new FirstFragment();\n\n etDate = findViewById(R.id.etDate);\n etType = findViewById(R.id.etType);\n etNotif = findViewById(R.id.etNotif);\n etEventId = findViewById(R.id.etEventId);\n toolbarNE = findViewById(R.id.menuNewEvent);\n\n toolbarNE.setOnMenuItemClickListener(new MaterialToolbar.OnMenuItemClickListener() {\n @Override\n …Run Code Online (Sandbox Code Playgroud) 我试图限制日期和时间.我希望如果用户尝试将日期设置为小于当前日期,那么它应该显示警报,同样的事情是按时完成.我使用的日期和时间选择和我onDateSetListener和onTimeSetListener情况如下:
DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
dateTime.set(Calendar.YEAR, year);
dateTime.set(Calendar.MONTH, monthOfYear);
dateTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
update_date_display();
// ---for setting notification----
day = dayOfMonth;
month = monthOfYear;
AddEditTask.year = year;
c.set(year, month, day);
}
};
protected void update_date_display() {
et_task_date.setText(formatDate.format(dateTime.getTime()));
}
TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
dateTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
dateTime.set(Calendar.MINUTE, minute);
update_time_display();
// ---for setting notification---
hour …Run Code Online (Sandbox Code Playgroud) 我必须在Date字段中进行验证,该验证必须比当前日期少18年,否则必须显示错误.
public static boolean dobdateValidate(String date) {
boolean result = false;
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
try {
Date parseddate = sdf.parse(date);
Calendar c2 = Calendar.getInstance();
c2.add(Calendar.DAY_OF_YEAR, -18);
Date dateObj2 = new Date(System.currentTimeMillis());
if (parseddate.before(c2.getTime())) {
result = true;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我想只获得当前月份(不需要年和日).例.这个月是一月.显示db中与1月相关的列表视图数据.所有12个月.用户也可以从对话框中选择任意月份.我还在对话框中列出了几个月来选择用户想要的月份.
问题
1.获取当前月份,然后从db填充数据(例如,当前月份是1月,然后从db填充1月数据,如果当前月份是4月,则从数据填充4月数据)每个月.
问题
1.如何知道当前月份?
2.如何填充与当月相关的数据?
当前代码:
public class MonthlyFragment extends Fragment {
private int monthField;
public MonthlyFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_monthly, container, false);
// String currentDateString = DateFormat.getDateInstance().format(new Date());
Button button = (Button) rootView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAlertDialog1();
}
});
return rootView;
}
private void showAlertDialog1() {
final String[] Selected = new String[]{"January", "February", "March", "April",
"May", "June", …Run Code Online (Sandbox Code Playgroud) 我是Android的绝对初学者.我正在尝试使用datepicker对话框在片段内部设置文本字段的文本.
这是活动内部的文本字段的片段
public class CreateTaskFragment extends Fragment{
private Button saveBtn;
private EditText tfDescription,tfDate;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.create_task,container,false);
tfDescription = (EditText)view.findViewById(R.id.tf_task_description);
tfDate = (EditText)view.findViewById(R.id.tf_task_date);
tfDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment pickerFragment = new SelectDateFragment();
pickerFragment.show(getFragmentManager(),"DatePicker");
}
});
saveBtn = (Button)view.findViewById(R.id.btn_save_task);
saveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveTask();
}
});
return view;
}
public void saveTask()
{
String description = tfDescription.getText().toString();
String date = …Run Code Online (Sandbox Code Playgroud)