Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onTimeSetListener中的OnTimeSet不工作_Android_Android Timepicker - Fatal编程技术网

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();
    });