从TextView文本设置TimePicker时间



我用这篇文章从TextView创建了一个TimePicker。现在,我想显示选择了上一个时间的TimePicker。

所以我第一次打开TimePicker并设置08:15。第二次,我想在TimePicker上显示预设时间08:15,而不是当前小时:分钟。

我想我需要更改这个部件代码:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
// Create a new instance of TimePickerDialog and return it
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}

试试这个代码。。

public class displayTime extends AppCompatActivity {
TextView textView;
int hour,min;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=findViewById(R.id.amTvData);
Calendar mcurrentTime = Calendar.getInstance();
hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
min = mcurrentTime.get(Calendar.MINUTE);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showTime(hour,min);
}
});
}
void showTime(int hours,  int minte){
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(displayTime.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
textView.setText( selectedHour + ":" + selectedMinute);
hour=selectedHour;
min=selectedMinute;
}
}, hours, minte, false);//Yes 24 hour time
mTimePicker.setTitle("Select Time");
mTimePicker.show();
}
}

或者@Vinay Rathod的好答案是,你可能想要保存在类实例上,而不需要任何存储(很多情况下都可以(,按照以下方式尝试,保存全局变量:

public class MyActivity extends AppCompatActivity {
...
private int selectedHourOfDay, selectedMinuteOfDay;
...
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.text_view);
Calendar calendar = Calendar.getInstance();
selectedHourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
selectedMinuteOfDay = calendar.get(Calendar.MINUTE);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new TimePickerDialog(MyActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hour, int minute) {
textView.setText(hour + "h " + minute + "m");
selectedHourOfDay = hour;
selectedMinuteOfDay = minute;
}
}, selectedHourOfDay, selectedMinuteOfDay, false).show();
}
});
}
...
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// get minute and hour from shared preference
SharedPreferences sharedpreferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
int hour = sharedpreferences.getInt("hourOfDay", 0);
int minute = sharedpreferences.getInt("minute", 0);
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// save to preference
SharedPreferences sharedpreferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putInt("hourOfDay", hourOfDay);
editor.putInt("minute", minute);
editor.commit();
}

最新更新