Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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 单击按钮是否会在单击事件中创建和销毁视图?_Android_Button_Onclick_Listener_Countdowntimer - Fatal编程技术网

Android 单击按钮是否会在单击事件中创建和销毁视图?

Android 单击按钮是否会在单击事件中创建和销毁视图?,android,button,onclick,listener,countdowntimer,Android,Button,Onclick,Listener,Countdowntimer,我有一个Android应用程序,它应该模拟计时器,问题是当我点击启动计时器的按钮时,CountDownTimer立即触发onFinish方法,导致一个日志条目显示计时器已经完成,并在手机上显示祝酒词。DOW在单击事件中单击按钮onClick调用创建和销毁视图吗 这是按钮调用的方法: public void onClick(View v){ numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListen

我有一个Android应用程序,它应该模拟计时器,问题是当我点击启动计时器的按钮时,
CountDownTimer
立即触发onFinish方法,导致一个日志条目显示计时器已经完成,并在手机上显示祝酒词。DOW在单击事件中单击按钮
onClick
调用创建和销毁视图吗

这是按钮调用的方法:

public void onClick(View v){
    numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        timerValue = newVal*1000;
    }
        });

        new CountDownTimer(timerValue, 1000){
            @Override
            public void onTick(long millisUntilFinished) {

                Log.i("robeh accadono", String.valueOf(millisUntilFinished/1000));

            }

            @Override
            public void onFinish() {
                Toast.makeText(MainActivity.this, "Il timer è arrivato alla fine", Toast.LENGTH_SHORT).show();
                Log.i("Fatto!", "finito");

            }
        }.start();
    }

似乎当按下按钮时,
timerValue
变量根本没有赋值

从单击事件中删除这段代码,并在按钮单击代码片段之前使用它

numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        timerValue = newVal*1000;
    }
});

从单击事件中删除这段代码,并在按钮单击代码段之前使用它

numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        timerValue = newVal*1000;
    }
});

嗨,Nicola,请将代码更改为:

公共void onClick(视图v){ int timerValue=numberPicker.getValue()*1000


希望有帮助!!!

你好,尼古拉,请将代码更改为:

公共void onClick(视图v){ int timerValue=numberPicker.getValue()*1000


希望能有帮助!!!

您是否尝试过使用带断点的调试器来确定出现了什么?是的,就像它重置了TimerValue一样您是否尝试过使用带断点的调试器来确定出现了什么?是的,就像它重置了TimerValue一样我认为它应该在onClick中,所以它采取了正确的方法我想它应该在onClick中,所以它确实采用了正确的值,现在就去试试