Android:如何触摸 "for-loop" 中的按钮以使应用程序开始下一轮循环
Android: How to make a touch on a button inside a "for-loop" to make app start next round of the loop
我正在尝试找出有关如何使 for 循环在循环进入下一轮之前等待按钮单击的语法。该应用程序可能看起来毫无意义,但重点是找出这种语法。
在下面的代码中,buttonA 应该为每一轮更改数字。 buttonA 中的文本应该是 for 循环的计数器 (x) 中的当前数字。我希望它首先显示“1”,当单击其中一个按钮时我希望它显示“2”(因为 for 循环中的下一轮 x 应该是“2”),下一次是“3” ”。使用 buttonA 下方的代码显示“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
我认为您的情况不需要 for 循环。
尝试只使用计数器:
private int mCounterX;
@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();
mCounterX= 1;
buttonA.setText(Integer.toString(mCounterX));
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");
mCounterX++;
buttonA.setText(Integer.toString(mCounterX));
}
});//End onClickListenerA
buttonB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button");
mCounterX++;
buttonA.setText(Integer.toString(mCounterX));
}
});//End onClickListenerB
buttonC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button ");
mCounterX++;
buttonA.setText(Integer.toString(mCounterX));
}
});//End onClickListenerA
}//End onCreate
嗯。不要。
你想要一个这样的循环,你肯定不能像那样线程化。您需要在 activity 中设置变量,等待用户交互,然后递增您设置的变量并调用函数来设置下一轮。
int x;
@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();
x = 1;
setupRound();
}
private void setupRound() {
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");
setupRound();
}
});//End onClickListenerA
buttonB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button");
setupRound();
}
});//End onClickListenerB
buttonC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button ");
setupRound();
}
});//End onClickListenerA
i++;
}
我正在尝试找出有关如何使 for 循环在循环进入下一轮之前等待按钮单击的语法。该应用程序可能看起来毫无意义,但重点是找出这种语法。
在下面的代码中,buttonA 应该为每一轮更改数字。 buttonA 中的文本应该是 for 循环的计数器 (x) 中的当前数字。我希望它首先显示“1”,当单击其中一个按钮时我希望它显示“2”(因为 for 循环中的下一轮 x 应该是“2”),下一次是“3” ”。使用 buttonA 下方的代码显示“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
我认为您的情况不需要 for 循环。
尝试只使用计数器:
private int mCounterX;
@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();
mCounterX= 1;
buttonA.setText(Integer.toString(mCounterX));
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");
mCounterX++;
buttonA.setText(Integer.toString(mCounterX));
}
});//End onClickListenerA
buttonB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button");
mCounterX++;
buttonA.setText(Integer.toString(mCounterX));
}
});//End onClickListenerB
buttonC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button ");
mCounterX++;
buttonA.setText(Integer.toString(mCounterX));
}
});//End onClickListenerA
}//End onCreate
嗯。不要。
你想要一个这样的循环,你肯定不能像那样线程化。您需要在 activity 中设置变量,等待用户交互,然后递增您设置的变量并调用函数来设置下一轮。
int x;
@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();
x = 1;
setupRound();
}
private void setupRound() {
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");
setupRound();
}
});//End onClickListenerA
buttonB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button");
setupRound();
}
});//End onClickListenerB
buttonC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2.setText("Wrong button ");
setupRound();
}
});//End onClickListenerA
i++;
}