Я пытаюсь выяснить синтаксис о том, как заставить for-loop ждать кнопки buttonclick прежде чем цикл перейдет к следующему раунду. Приложение может показаться бессмысленным, но нужно выяснить этот синтаксис.Android: Как нажимать кнопку внутри «for-loop», чтобы приложение начинало следующий раунд цикла
В коде под кнопкой А предполагается изменить номер для каждого раунда. Текст в buttonA должен быть текущим номером в счетчике (x) цикла for. Я хочу, чтобы он сначала отображал «1», и когда одна из кнопок нажата, я хочу, чтобы она отображала «2» (потому что следующий раунд в for-loop x должен быть «2»), а в следующий раз «3 ». Используя код под кнопкойA отображает «3» в качестве запуска приложения, поэтому очевидно, что цикл for завершился до того, как приложение запустится.
Вот код в OnCreate-метода:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private TextView textView1;
private Button buttonA;
private Button buttonB;
private Button buttonC;
private TextView textView2;
private int a;
private int b;
private int c;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1 = (TextView) findViewById(R.id.txtView1);
buttonA = (Button) findViewById(R.id.btn1);
buttonB = (Button) findViewById(R.id.btn2);
buttonC = (Button) findViewById(R.id.btn3);
textView2 = (TextView) findViewById(R.id.txtView2);
final Random rndNumber = new Random();
for (int x = 1; x <= 3; x++){
buttonA.setText(Integer.toString(x));
buttonB.setText("5");
buttonC.setText("9");
buttonA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Good, you pushed the right button");
}
});//End onClickListenerA
buttonB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button");
}
});//End onClickListenerB
buttonC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button ");
}
});//End onClickListenerA
}//End for-loop
}//End onCreate
Спасибо, это работает! Но что, если я хочу, чтобы программа остановилась после x <= 5? Как я могу остановить его, не используя цикл for-loop или while? – user820913
Сделать условие выхода. «если (x> 5) вернуться;» в раунде настройки. Или, скорее, установите остальную часть невидимой вещи или что угодно, когда вы выйдете. – Tatarize
Это сработало, когда я положил оператор (if (x> 5) {return;}) внутри метода buttonA-onClick. Спасибо :-) – user820913