Android onTimeSetListener中的OnTimeSet不工作
我在片段中实现了一个Android onTimeSetListener中的OnTimeSet不工作,android,android-timepicker,Android,Android Timepicker,我在片段中实现了一个TimePickerFragment。时间选择器打开,我可以选择时间。但是,TextView值即使在通过TimePickerDialog选择时间后也不会更新。在onTimeSet方法中还有其他函数调用也不起作用 我遵循了教程 下面是TimePickerFragment的代码: public class TimerPickerFragment extends DialogFragment { @NonNull @NotNull @Override
TimePickerFragment
。时间选择器打开,我可以选择时间。但是,TextView
值即使在通过TimePickerDialog
选择时间后也不会更新。在onTimeSet
方法中还有其他函数调用也不起作用
我遵循了教程
下面是TimePickerFragment
的代码:
public class TimerPickerFragment extends DialogFragment {
@NonNull
@NotNull
@Override
public Dialog onCreateDialog(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getTargetFragment(), hour, minute, DateFormat.is24HourFormat(getActivity()));
}
}
我在其中调用TimePickerFragment
的片段如下:
public class Fragment_alarm extends Fragment implements TimePickerDialog.OnTimeSetListener {
private NotificationHelper mNotificationHelper;
private TextView mTextView;
@Nullable
@org.jetbrains.annotations.Nullable
@Override
public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle("Set Alarm");
View view = inflater.inflate(R.layout.fragment_alarm, container, false);
Button buttonTimePicker = view.findViewById(R.id.timeButton);
mTextView = view.findViewById(R.id.time_tv);
buttonTimePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment timePicker = new TimerPickerFragment();
timePicker.show(getActivity().getSupportFragmentManager(), "time picker");
}
});
Button buttonCancelAlarm = view.findViewById(R.id.button_cancel);
buttonCancelAlarm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelAlarm();
}
});
return view;
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, hourOfDay);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, 0);
updateTimeText(c);
startAlarm(c);
}
private void updateTimeText(Calendar c) {
String timeText = "Alarm set for: ";
timeText += DateFormat.getTimeInstance(DateFormat.SHORT).format(c.getTime());
mTextView.setText(timeText);
}
private void startAlarm(Calendar c) {
...
}
private void cancelAlarm() {
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getActivity(), AlertReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), 1, intent, 0);
alarmManager.cancel(pendingIntent);
mTextView.setText("Alarm cancelled");
}
}
cancelAlarm
方法工作正常。但是从onTimeSet
调用的其他两个函数不起作用
请帮我解决这个问题。
提前谢谢。这是我的一个报警项目的代码。 只需在按钮的onclick事件中触发此方法,希望此方法对您有效
private void addAlarm(){
final Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.add_alarm);
final EditText editN = dialog.findViewById(R.id.edittextALARM);
final TextView picktime = dialog.findViewById(R.id.addAlarm_timepick);
picktime.setOnClickListener(v -> {
TimePickerDialog timePickerDialog = new TimePickerDialog(
getActivity(),
(view, hourOfDay, minute) -> {
h = hourOfDay;
m = minute;
Calendar calendar = Calendar.getInstance();
calendar.set(0,0,0, h, m);a
//this right here maybe the answer u need
picktime.setText(DateFormat.format("hh:mm aa", calendar));
getActiveAlarm();
},12,0,false
);
timePickerDialog.updateTime(h, m);
timePickerDialog.show();
});