Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Loops 如何在循环中设置倒计时?_Loops_Kotlin_Countdowntimer - Fatal编程技术网

Loops 如何在循环中设置倒计时?

Loops 如何在循环中设置倒计时?,loops,kotlin,countdowntimer,Loops,Kotlin,Countdowntimer,因此,我目前正在开发一个应用程序,它将执行一项任务,该任务将根据用户在文件中提供的输入进行设计。从输入中,应用程序将获得字符串的ArrayList,其中的大小将用于确定循环的重复次数 任务是在特定的持续时间内隐藏一个ImageView和两个按钮,然后使其再次可见(使用倒计时)。当按钮可见时,当它们单击其中一个按钮并根据单击的按钮存储一个值时,会从用户处获得响应。经过一定时间后,ImageView和按钮将再次不可见 循环将执行执行任务的功能。我现在没有循环的代码如下: val timer3

因此,我目前正在开发一个应用程序,它将执行一项任务,该任务将根据用户在文件中提供的输入进行设计。从输入中,应用程序将获得字符串的ArrayList,其中的大小将用于确定循环的重复次数

任务是在特定的持续时间内隐藏一个ImageView和两个按钮,然后使其再次可见(使用倒计时)。当按钮可见时,当它们单击其中一个按钮并根据单击的按钮存储一个值时,会从用户处获得响应。经过一定时间后,ImageView和按钮将再次不可见

循环将执行执行任务的功能。我现在没有循环的代码如下:

    val timer3 = object : CountDownTimer(5000, 1000) {
        override fun onFinish() {
            visible() //ImageView and buttons to be visible
            btnX.setOnClickListener {
                val intentResultActivity = Intent(this@TaskActivity, ResultActivity::class.java)
                startActivity(intentResultActivity) //Go to the next activity
            }
            btnO.setOnClickListener {
                val intentResultActivity = Intent(this@TaskActivity, ResultActivity::class.java)
                startActivity(intentResultActivity) //Go to the next activity
            }
        }

        override fun onTick(p2: Long) {
            invisible() //ImageView and buttons to be invisible
            imageView.setImageURI(Uri.parse(SettingsActivity.pic3)) //Set the image 
        }
    }

    val timer2 = object : CountDownTimer(5000, 1000) {
        override fun onFinish() {
            visible() //ImageView and buttons to be visible
            btnX.setOnClickListener {
                timer3.start() //Start the next timer
            }
            btnO.setOnClickListener {
                timer3.start() //Start the next timer
            }
        }

        override fun onTick(p1: Long) {
            invisible() //ImageView and buttons to be invisible
            imageView.setImageURI(Uri.parse(SettingsActivity.pic2)) //Set the image 
        }
    }

    val timer = object: CountDownTimer(5000,1000){
        override fun onFinish() {
            visible() //ImageView and buttons to be visible
            btnX.setOnClickListener {
                timer2.start() //Start the next timer
            }
            btnO.setOnClickListener {
                timer2.start() //Start the next timer
            }
        }

        override fun onTick(p0: Long) {
            invisible() //ImageView and buttons to be invisible
            imageView.setImageURI(Uri.parse(SettingsActivity.pic1)) //Set the image 
        }
    }
我在下面所做的循环代码将执行最后一个倒计时并跳过其余部分

    for (i in 0 until SettingsActivity.picArray.size) {
        if (i<(SettingsActivity.picArray.size-1)) {
            timerLoopBlank(i)
        }
    }

我认为由于onTick参数的缘故,前面的倒计时被跳过了。如何执行循环并且不跳过前面的倒计时?有人能帮我吗?

您正在创建多个
倒计时对象。只需在类主体和
onFinish()
do
timer.start()
中创建它的对象,您能告诉我如何做吗?对不起,我对这件事真的很陌生。
    private fun timerLoopBlank (i:Int) {
        val timerBlank = object: CountDownTimer(5000,1000){
            override fun onFinish() {
                visible()
                timerLoopAnswer()
            }

            override fun onTick(p0: Long) {
                invisible()
                imageView.setImageURI(Uri.parse(SettingsActivity.picArray[i]))
            }
        }
        timerBlank.start()
    }

    fun timerLoopAnswer () {
        val timerAnswer = object: CountDownTimer(5000,1000){
            override fun onFinish() {

            }

            override fun onTick(p1: Long) {
                btnX.setOnClickListener {
                    answerArray.add('X')
                }
                btnO.setOnClickListener {
                    answerArray.add('O')
                }
            }
        }
        timerAnswer.start()
    }

    fun invisible(){
        imageView.visibility = View.INVISIBLE
        btnX.visibility = View.INVISIBLE
        btnO.visibility = View.INVISIBLE
    }

    fun visible(){
        imageView.visibility = View.VISIBLE
        btnX.visibility = View.VISIBLE
        btnO.visibility = View.VISIBLE
    }