【发布时间】:2015-02-13 07:46:42
【问题描述】:
我有一个日期选择器,它应该允许用户只选择昨天的日期,并且月份和年份不应该改变。以下是我的日期选择器代码,有人可以查看它并告诉我要进行哪些更改以达到我想要的结果吗?
Java 日期选择器:
public class MainActivity extends ActionBarActivity {
java.text.DateFormat format = java.text.DateFormat.getDateInstance();
Calendar cal = Calendar.getInstance();
TextView label;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
label = (TextView) findViewById(R.id.textView1);
btn = (Button) findViewById(R.id.button1);
updatedate();
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setDate();
}
});
}
public void updatedate(){
label.setText(format.format(cal.getTime()));
}
public void setDate(){
new DatePickerDialog(MainActivity.this, d, cal.get(cal.YEAR), cal.get(cal.MONTH), cal.get(cal.DAY_OF_MONTH)).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
cal.set(cal.YEAR, year);
cal.set(cal.MONTH, monthOfYear);
cal.set(cal.DAY_OF_MONTH, dayOfMonth);
updatedate();
}
};
}
【问题讨论】:
-
你不需要显示未来的日期吧?
-
给这个 d.getDatePicker().setMaxDate(System.currentTimeMillis());
-
用方法去做。这会很容易。等我给你看。
-
顺便说一句,您必须以静态方式设置日历时间 cal.set(Calendar.YEAR,year) 而不是 cal.set(cal.YEAR,year)...跨度>
-
@shadow 谢谢你,但问题是它只允许我不选择未来的日期,但我需要用户只能选择日期:今天的日期是 13/02/2015 和用户应该只能选择 12/02/2014 你能帮我解决这个问题吗?
标签: android datepicker