如何暂停循环并等待用户单击 [英] How to pause for loop and wait for user click

查看:104
本文介绍了如何暂停循环并等待用户单击的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个随机生成任务的测验应用程序,但是我不知道如何等待用户单击for loop.我尝试这样做:

I'm creating a quiz app where randomly generating tasks, but I don't know how to wait for user click in for loop. I tried to do this:

    final Integer min=1;
    final Integer max=100;
    for (int i = 0; i<5; i++){
        button_check3.setVisibility(View.VISIBLE);
        button_next3.setVisibility(View.INVISIBLE);
        final int x = new Random().nextInt(max - min)+min;
        final int y = new Random().nextInt(max-x - min)+min;
        task3.setText(x + " + " + y + " ="); //set task
        final  int zbroj = x+y;

        button_check3.setOnClickListener(new View.OnClickListener() { //check user answer
            @Override
            public void onClick(View v) {
                button_check3.setVisibility(View.INVISIBLE);
                button_next3.setVisibility(View.VISIBLE);
                String user_answer=answer3.getText().toString();
                if (user_answer.equals(zbroj)){
                    check3.setImageResource(R.drawable.true_);
                }
                else {
                    check3.setImageResource(R.drawable.wrong_);
                }
            }
        });
        button_next3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //continue for loop
            }
        });
    }

我要:

  • 生成任务
  • 等待用户单击检查按钮并检查答案
  • 等待用户单击下一步按钮
  • 继续循环

我想重复五遍. 我以前看过这个问题,但没有找到我需要的东西.谢谢.

I want to repeate this five times. I saw this question before but I didn't find what I need. Thank you.

推荐答案

您可以创建下一个:

class LoopActivity : AppCompatActivity() {

    val button1: Button = findViewById()
    val button2: Button = findViewById()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        setContentView(/*layout*/)
        imitationLoop(false)
    }

    fun imitationLoop(needBreak: Boolean) {
        if (!needBreak) {
            someCode1()
            button1.setOnClickListener {
                button1.setOnClickListener { }
                someCode2()
                button2.setOnClickListener {
                    button2.setOnClickListener { }
                    imitationLoop(/*conditionBreak*/)
                }
            }
        }
    }

    fun someCode1() {
        //somecode
    }
    fun someCode2() {
        //somecode
    }
}

是递归.并且您需要中断递归的条件. 如果您想要外观(​​int i = 0; i< 10; i ++):

It's recursion. And you need condition for break recursion. If you want condition for as look (int i=0; i<10; i++):

class LoopActivity : AppCompatActivity() {

    val button1: Button = findViewById()
    val button2: Button = findViewById()
    var i: Int = 0
    var max: Int = 10

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(/*layout*/)
        imitationLoop(false)
    }

    fun imitationLoop(needBreak: Boolean) {
        if (!needBreak) {
            someCode1()
            button1.setOnClickListener {
                button1.setOnClickListener { }
                someCode2()
                button2.setOnClickListener {
                    button2.setOnClickListener { }
                    imitationLoop(i++ < max)
                }
            }
        }
        else {
            i = 0
        }
    }

    fun someCode1() {
        //somecode
    }
    fun someCode2() {
        //somecode
    }
}

这篇关于如何暂停循环并等待用户单击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆