【发布时间】:2018-12-17 12:56:07
【问题描述】:
我在我的应用程序中使用自定义的数字选择器来获取月份和年份作为用户的输入。通过在数字选择器中选择月份,月份值应保存为字符串,年份应保存为整数值。所以我只想从字符串月份名称和整数年份值中获取完整的日期格式。
This is my customized month picker.
final Dialog d = new Dialog ( getContext ( ) );
d.setContentView ( R.layout.dialog );
final NumberPicker monthNp = (NumberPicker) d.findViewById ( R.id.monthPicker );
final NumberPicker yearNp = (NumberPicker) d.findViewById ( R.id.yearPicker );
Button okDialog = (Button) d.findViewById ( R.id.ok_dialog );
Button cancelDialog = (Button) d.findViewById ( R.id.cancel_dialog );
monthNp.setMinValue ( 0 );
monthNp.setMaxValue ( monthArray.length - 1 );
monthNp.setDisplayedValues ( monthArray );
monthNp.setWrapSelectorWheel ( false );
monthNp.setValue ( imonth );
monthNp.setOnValueChangedListener ( new NumberPicker.OnValueChangeListener ( ) {
@Override
public void onValueChange ( NumberPicker picker, int oldVal, int newVal ) {
if ( oldVal != 0 ) {
changed = 1;
String getMonthFromNp = monthArray[newVal];
}
}
} );
}
if ( yearNp != null ) {
yearNp.setMinValue ( year - 15 );
yearNp.setMaxValue ( year );
yearNp.setValue ( year );
yearNp.setWrapSelectorWheel ( false );
yearNp.setOnValueChangedListener ( new
NumberPicker.OnValueChangeListener ( ) {
@Override
public void onValueChange ( NumberPicker picker, int oldVal,
int newVal ) {
if ( oldVal != 0 ) {
changed = 1;
int getYearFromNp = yearNp.getValue ( );
}
}
} );
try{
SimpleDateFormat monthFromNP = new SimpleDateFormat ( "MMMM" );
Date month = monthFromNP.parse( getMonthFromNp );
calendar = Calendar.getInstance ( );
calendar.setTime ( month );
calendar.set ( Calendar.YEAR, getYearFromNp );
calendar.set ( Calendar.MONTH, +1 );
calendar.set ( Calendar.DAY_OF_MONTH, 0 );
calendar.set ( Calendar.DATE,
calendar.getActualMinimum ( Calendar.DAY_OF_MONTH ) );
calendar.set ( Calendar.HOUR_OF_DAY, 0 );
calendar.set ( Calendar.MINUTE, 0 );
calendar.set ( Calendar.SECOND, 0 );
calendar.set ( Calendar.MILLISECOND, 0 );
startDate = calendar.getTime ( );
calendar.set ( Calendar.DATE,
calendar.getActualMaximum ( Calendar.DAY_OF_MONTH ) );
calendar.set ( Calendar.HOUR_OF_DAY, 23 );
calendar.set ( Calendar.MINUTE, 59 );
calendar.set ( Calendar.SECOND, 59 );
calendar.set ( Calendar.MILLISECOND, 999 );
endDate = calendar.getTime ( );
}
catch ( ParseException e ) {
e.printStackTrace ( );
}
【问题讨论】:
-
请添加所有相关代码,而不仅仅是一张照片
-
顺便考虑扔掉长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。 -
你不能从你的选择器中得到(月份)数字而不是字符串吗?对我来说似乎更容易。出于好奇而不了解 Android GUI 编程。
-
是的,我将月份作为字符串数组传递,因此在数字选择器中选择月份时,它将在 newVal=>9 中返回整数,因此我将字符串数组的 newVal 传递为月份 [9 ] 它将给出字符串数组值“October”。即使我将月份作为整数格式,如何将其转换为日期格式。
标签: android android-number-picker