如何暂停循环并等待用户点击
How to pause for loop and wait for user click
我正在创建一个随机生成任务的测验应用程序,但我不知道如何等待用户点击 for 循环。我尝试这样做:
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
}
});
}
我想:
- 生成任务
- 等待用户点击检查按钮并检查答案
- 等待用户点击下一步按钮
- 继续循环
我想重复五遍。 之前看到过这个问题,但是没有找到我需要的。谢谢。
你可以做下一个:
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
}
}
这是递归。你需要中断递归的条件。
如果你想要 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
}
}
我正在创建一个随机生成任务的测验应用程序,但我不知道如何等待用户点击 for 循环。我尝试这样做:
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
}
});
}
我想:
- 生成任务
- 等待用户点击检查按钮并检查答案
- 等待用户点击下一步按钮
- 继续循环
我想重复五遍。 之前看到过这个问题,但是没有找到我需要的。谢谢。
你可以做下一个:
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
}
}
这是递归。你需要中断递归的条件。 如果你想要 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
}
}