我希望用户从date picker dialogue
中选择日期并使用所选日期。
我做了一个日期选择对话,唯一的问题是当对话打开日期显示为1/1/1990,那么用户必须来到今年。我想用today's
日期打开对话框。
以下是我的代码 -
public class MyClass extends AppCompatActivity {
Calendar cal;
Button selectDate;
DatePickerDialog datePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_trains_bw_stations);
selectDate=findViewById(R.id.select_date);
selectDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cal=Calendar.getInstance();
int day=cal.get(Calendar.DAY_OF_MONTH);
int month=cal.get(Calendar.MONTH);
int year=cal.get(Calendar.YEAR);
datePicker=new DatePickerDialog(TrainsBwStations.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int mYear, int mMonth, int mDayOfMonth) {
Log.d("Rail","Year-"+mYear);
Log.d("Rail","Month-"+mMonth);
Log.d("Rail","Day-"+mDayOfMonth);
}
},day,month,year);
datePicker.show();
}
});
}
}
答案 0 :(得分:1)
Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(Class.this, Class.this,
mYear, mMonth, mDay);
dialog.show();
答案 1 :(得分:0)
试试这个:
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
// set current date into datepicker
datePicker.init(year, month, day, null);
答案 2 :(得分:0)
请使用此
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String date = df.format(c.getTime());
datePickerDialog.updateDate(Integer.parseInt(date.split("/")[2]),Integer.parseInt(date.split("/")[1]),Integer.parseInt(date.split("/")[0]));
datePickerDialog.setTitle("");
datePickerDialog.show();
答案 3 :(得分:0)
尝试以下代码
public class MyClass extends AppCompatActivity {
Calendar cal;
Button selectDate;
DatePickerDialog datePicker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_trains_bw_stations);
selectDate=findViewById(R.id.select_date);
selectDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cal = Calendar.getInstance();
final DatePickerDialog.OnDateSetListener dateA = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, monthOfYear);
cal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
}
};
new DatePickerDialog(MyClass.this, dateA, cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)).show();
}
});
}
}
答案 4 :(得分:0)
以后您可以根据需要转换为字符串格式的日期
//Defining it in Class Activity before onCreate.. or you can define in onCreate..
private Calendar calendar;
private int year, month, day;
String formattedDate, toDate, fromDate, pickUpdate;
//Inside onCreate...
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
//on button click or any view click.. paste the below code..
toTV = (TextView) findViewById(R.id.toTV);
toTV.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//have a look at **to** after YourActivity.this
DatePickerDialog datePickerDialog = new DatePickerDialog(YourActivity.this, to, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
//This is used to set the date to select current and future date not the past dates..uncomment if you want to use it...
//datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
datePickerDialog.show();
}
});
//outside oncreate which is a calender pop-up...
//Here **to** is object which called in onClick of dateBT
DatePickerDialog.OnDateSetListener to = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String day = dayOfMonth + "";
if (dayOfMonth < 9) {
day = "0" + dayOfMonth;
}
String monthString = (String.valueOf(month + 1));
if (month < 9) {
monthString = "0" + monthString;
}
formattedDate = String.valueOf(year) + "/" + monthString
+ "/" + day;
dateTV.setText(formattedDate);
date = formattedDate;
}
};