Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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 Java的倒计时_Java_Android_Time_Timepicker - Fatal编程技术网

取消Android Java的倒计时

取消Android Java的倒计时,java,android,time,timepicker,Java,Android,Time,Timepicker,我在计时器选择器对话框中有一个倒计时计时器。我的类扩展了片段 有三个页面视图 当我在案例0中时,我通过时间选择器倒计时选择一切都是完美的。当我在案例1中,我想取消我的时间,当我点击一个按钮时,什么都没有发生 只有当我在案例0中时,才能像这个计时器一样开始计时。start();当我单击timer.cancel()时,它会工作;我希望有人能帮我 我的碎片 public static class PlaceholderFragment extends Fragment { /**

我在计时器选择器对话框中有一个倒计时计时器。我的类扩展了片段 有三个页面视图

当我在案例0中时,我通过时间选择器倒计时选择一切都是完美的。当我在案例1中,我想取消我的时间,当我点击一个按钮时,什么都没有发生

只有当我在案例0中时,才能像这个计时器一样开始计时。start();当我单击timer.cancel()时,它会工作;我希望有人能帮我

我的碎片

 public static class PlaceholderFragment extends Fragment {
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    private CountDownTimer timer;



    public PlaceholderFragment() {
    }

    public static PlaceholderFragment newInstance(int sectionNumber) {
        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        //TextView textView = (TextView) rootView.findViewById(R.id.section_label);
        //textView.setText(getArguments().getInt(ARG_SECTION_NUMBER));


        //togglebutton.setChecked(false);



        text1=(TextView) rootView.findViewById(R.id.textView1);


        //textAlarmPrompt = (TextView) rootView.findViewById(R.id.textView1);
        textViewTime = (TextView) rootView.findViewById(R.id.textView1);
        buttonstartSetDialog = (Button) rootView.findViewById(R.id.btn1);

        buttonstartSetDialog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //textAlarmPrompt.setText("");


                openTimePickerDialog(true);



            }
        });



        switch (getArguments().getInt(ARG_SECTION_NUMBER)) {
            case 0: {

                ImageView im = (ImageView) rootView.findViewById(R.id.im);
                im.setBackgroundResource(R.drawable.thunder1);
                ttsButton = (ToggleButton) rootView.findViewById(R.id.btn);
                ttsButton.setChecked(true);




                break;
            }
            case 1: {
                ImageView im = (ImageView) rootView.findViewById(R.id.im);
                im.setBackgroundResource(R.drawable.thunder2);
                ttsButton = (ToggleButton) rootView.findViewById(R.id.btn);
                ttsButton.setChecked(true);




                break;
            }
            case 2: {
                ImageView im = (ImageView) rootView.findViewById(R.id.im);
                im.setBackgroundResource(R.drawable.thunder3);
                ttsButton = (ToggleButton) rootView.findViewById(R.id.btn);
                ttsButton.setChecked(true);




                break;
            }


        }




        return rootView;
    }
我的计时器对话框

 private void openTimePickerDialog(boolean is24r) {
        Calendar calendar = Calendar.getInstance();

        timePickerDialog = new TimePickerDialog(
                getActivity(),
                onTimeSetListener,
                calendar.get(Calendar.HOUR_OF_DAY),
                calendar.get(Calendar.MINUTE),
                is24r);
        timePickerDialog.setTitle("Set Sleep Time");

        timePickerDialog.show();


    }

    TimePickerDialog.OnTimeSetListener onTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            timer = new CounterClass((minute * 60 * 1000) + (hourOfDay * 60* 60 * 1000), 1000);
            long millis = (minute * 60 * 1000) + (hourOfDay * 60* 60 * 1000);
            String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            //System.out.println(hms);
            textViewTime.setText(hms);


            timer.start();




        }};


    public class CounterClass extends CountDownTimer {


        /**
         * @param millisInFuture    The number of millis in the future from the call
         *                          to {@link #start()} until the countdown is done and {@link #onFinish()}
         *                          is called.
         * @param countDownInterval The interval along the way to receive
         *                          {@link #onTick(long)} callbacks.
         */

        public CounterClass(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @TargetApi(Build.VERSION_CODES.GINGERBREAD)
        @Override
        public void onTick(long millisUntilFinished) {
            long millis = millisUntilFinished;
            String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            //System.out.println(hms);


            textViewTime.setText(hms);



        @Override
        public void onFinish() {

            System.exit(0);
        }
    }
当我点击一个按钮时,我试图阻止它

  @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);





        if (this.isVisible()) {



btnstop.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    if(timer != null)
                    timer.cancel();


                }
            });




    }

}我建议您在活动中使用时间选择器,这样您就可以从您的子片段开始和停止时间选择器。只需定义自己的开始停止暂停方法。然后你可以用这种方式从你的任何片段调用它


((YourActivity)getActivity()).yourMethodName()

我建议您在活动中使用时间选择器,这样您可以从您的子片段开始和停止时间选择器。只需定义自己的开始停止暂停方法。然后你可以用这种方式从你的任何片段调用它


((YourActivity)getActivity()).yourMethodName()

在活动中声明计时器

class MyClass extends AppCompatActivity {
**STUFF**
public CountDownTimer timer;
}
然后像这样开始和停止

((MyClass)getActivity()).timer.start();
((MyClass)getActivity()).timer.cancel();

在活动中声明计时器

class MyClass extends AppCompatActivity {
**STUFF**
public CountDownTimer timer;
}
然后像这样开始和停止

((MyClass)getActivity()).timer.start();
((MyClass)getActivity()).timer.cancel();