Class Activity 中的日期选择器
Datepicker in Class Activity
我在 activity ApplyLeave 中使用了以下代码。我想选择日期并将日期、月份和年份保存到 public int 变量。
final Calendar calendar = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(ApplyLeave.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int year, int month, int day_of_month) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, (month)); //add +1 for next month calendar
calendar.set(Calendar.DAY_OF_MONTH, day_of_month);
String myFormat = "dd/MM/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
dtTmp = sdf.format(calendar.getTime());
}
},calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());//used to hide previous date,month and year
calendar.add(Calendar.YEAR, 0);
//dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());//used to hide future date,month and year
dialog.show();
String[] selTmp = dtTmp.split("/");
selBdate = Integer.parseInt(selTmp[0]);
selBmonth = Integer.parseInt(selTmp[1]);
selByear = Integer.parseInt(selTmp[2]);
stDt = MyUtility.getJulianDay(selByear, selBmonth, selBdate, ApplyLeave.this);
eBegin.setText(dtTmp);
我收到错误
java.lang.NullPointerException: Attempt to invoke
virtual method 'java.lang.String[]
java.lang.String.split(java.lang.String)' on a null object reference
at Line "String[] selTmp = dtTmp.split("/");
如果我评论这一行和以下三行,日期会被选中,但需要点击两次才能设置正确的日期。
日期选择器代码取自Answer by @Sunil。
试试这个对我有用
final 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 datePickerDialog = new DatePickerDialog(Activity_five.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Date date = new Date(year, monthOfYear, dayOfMonth);
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
@SuppressLint("SimpleDateFormat")
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
// String cdate = formatter.format(date);
String strDate = formatter.format(calendar.getTime());
}
}, mYear, mMonth, mDay);
//for set max value in date
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
datePickerDialog.show();
试试这个:
public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
TextView textView;
Button txt_open_date_picker;
int yy,mm,dd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
txt_open_date_picker = (Button) findViewById(R.id.txt_open_date_picker);
txt_open_date_picker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this,
MainActivity.this,
Calendar.getInstance().get(Calendar.YEAR),
Calendar.getInstance().get(Calendar.MONTH),
Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
}
});
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String date = dayOfMonth + "/" + month + "/" + year;
textView.setText(date);
}
}
我在 activity ApplyLeave 中使用了以下代码。我想选择日期并将日期、月份和年份保存到 public int 变量。
final Calendar calendar = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(ApplyLeave.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker arg0, int year, int month, int day_of_month) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, (month)); //add +1 for next month calendar
calendar.set(Calendar.DAY_OF_MONTH, day_of_month);
String myFormat = "dd/MM/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
dtTmp = sdf.format(calendar.getTime());
}
},calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
dialog.getDatePicker().setMinDate(calendar.getTimeInMillis());//used to hide previous date,month and year
calendar.add(Calendar.YEAR, 0);
//dialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());//used to hide future date,month and year
dialog.show();
String[] selTmp = dtTmp.split("/");
selBdate = Integer.parseInt(selTmp[0]);
selBmonth = Integer.parseInt(selTmp[1]);
selByear = Integer.parseInt(selTmp[2]);
stDt = MyUtility.getJulianDay(selByear, selBmonth, selBdate, ApplyLeave.this);
eBegin.setText(dtTmp);
我收到错误
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] java.lang.String.split(java.lang.String)' on a null object reference at Line "String[] selTmp = dtTmp.split("/");
如果我评论这一行和以下三行,日期会被选中,但需要点击两次才能设置正确的日期。
日期选择器代码取自Answer by @Sunil。
试试这个对我有用
final 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 datePickerDialog = new DatePickerDialog(Activity_five.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Date date = new Date(year, monthOfYear, dayOfMonth);
Calendar calendar = Calendar.getInstance();
calendar.set(year, monthOfYear, dayOfMonth);
@SuppressLint("SimpleDateFormat")
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
// String cdate = formatter.format(date);
String strDate = formatter.format(calendar.getTime());
}
}, mYear, mMonth, mDay);
//for set max value in date
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
datePickerDialog.show();
试试这个:
public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener{
TextView textView;
Button txt_open_date_picker;
int yy,mm,dd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
txt_open_date_picker = (Button) findViewById(R.id.txt_open_date_picker);
txt_open_date_picker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatePickerDialog datePickerDialog = new DatePickerDialog(
MainActivity.this,
MainActivity.this,
Calendar.getInstance().get(Calendar.YEAR),
Calendar.getInstance().get(Calendar.MONTH),
Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
}
});
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
String date = dayOfMonth + "/" + month + "/" + year;
textView.setText(date);
}
}