如何在onTimeSet方法设置后获取timePickerBTN文本并赋值给TextView
解决方案
方法1:直接复用格式化后的时间字符串(推荐)
不用额外从按钮获取文本,先把格式化好的时间字符串存起来,再同时给按钮和目标TextView设置,更高效:
// 先在Activity中初始化目标TextView(替换成你实际的控件ID) TextView targetTimeTv = findViewById(R.id.target_time_tv); timePickerBTN.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { TimePickerDialog timePickerDialog = new TimePickerDialog(NewTaskActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int hourOfDay, int Minute) { TimeHour = hourOfDay; TimeMinute = Minute; Calendar calendarTime = Calendar.getInstance(); calendarTime.set(0,0,0, TimeHour, TimeMinute); // 先格式化出时间字符串 CharSequence formattedTime = android.text.format.DateFormat.format("hh:mm aa", calendarTime); // 同时设置按钮和目标TextView的文本 timePickerBTN.setText(formattedTime); targetTimeTv.setText(formattedTime); } },12,0,false); timePickerDialog.updateTime(TimeHour, TimeMinute); timePickerDialog.show(); } });
方法2:从按钮获取文本再设置
如果一定要从按钮获取已设置的文本,在setText之后直接调用getText()即可:
// 同样先初始化目标TextView TextView targetTimeTv = findViewById(R.id.target_time_tv); timePickerBTN.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { TimePickerDialog timePickerDialog = new TimePickerDialog(NewTaskActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker timePicker, int hourOfDay, int Minute) { TimeHour = hourOfDay; TimeMinute = Minute; Calendar calendarTime = Calendar.getInstance(); calendarTime.set(0,0,0, TimeHour, TimeMinute); timePickerBTN.setText(android.text.format.DateFormat.format("hh:mm aa", calendarTime)); // 获取按钮文本并设置给TextView targetTimeTv.setText(timePickerBTN.getText()); } },12,0,false); timePickerDialog.updateTime(TimeHour, TimeMinute); timePickerDialog.show(); } });
关键注意点
- 确保目标TextView已经通过
findViewById完成初始化,且布局文件中的控件ID与代码中的一致。 - 若在Fragment中使用,需在
onViewCreated方法内初始化控件,或通过getView().findViewById()获取实例。
内容的提问来源于stack exchange,提问作者Divyanshu saraswat
相关产品推荐
相关产品推荐

