Java 如何在Android中编写等待输入的while循环?(已解决)
我的问题很简单。我可以用什么方法告诉我的程序按钮被按下?我正在尝试一些代码行,但它并没有真正起作用(我尝试使用iPressed)。在我的日志中,我甚至可以在输入值之前读取-->TAMAñO DEL CONTADOR:<直到达到最大值>行,因此我知道循环不会等待我的输入 这是我的密码:Java 如何在Android中编写等待输入的while循环?(已解决),java,android,android-studio,methods,while-loop,Java,Android,Android Studio,Methods,While Loop,我的问题很简单。我可以用什么方法告诉我的程序按钮被按下?我正在尝试一些代码行,但它并没有真正起作用(我尝试使用iPressed)。在我的日志中,我甚至可以在输入值之前读取-->TAMAñO DEL CONTADOR:行,因此我知道循环不会等待我的输入 这是我的密码: public class navegador extends AppCompatActivity { public String Sdat; public EditText ET2; int tam; ArrayList<
public class navegador extends AppCompatActivity {
public String Sdat;
public EditText ET2;
int tam;
ArrayList<String> Medidas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navegador);
ET2 = findViewById(R.id.ET1);
Button bot = findViewById(R.id.bot);
tam = getIntent().getIntExtra("numero",0);
Medidas = new ArrayList<>();
int contador = 0;
System.out.println("TAMAÑO DEL ARRAY: "+ tam);
while ( contador <= tam){
System.out.println("TAMAÑO DEL CONTADOR: " + contador);
bot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View bot) {
if(bot.isPressed()){
MeterMedida();
}
}
});
contador++;
if(contador == tam){
Toast.makeText(this, "Distancia máxima alcanzada. Toca Crear tabla.", Toast.LENGTH_SHORT).show();
}
}
}
public void MeterMedida(){
Sdat = ET2.getText().toString();
Medidas.add(Sdat);
ET2.setText("");
}
public void LanzarLista (View view){
Intent A = new Intent(this, Lista.class);
A.putStringArrayListExtra("Lista", Medidas);
startActivity(A);
}
}
公共类navegador扩展AppCompative活动{
公共字符串Sdat;
公共编辑文本ET2;
INTTAM;
阿雷利斯特·梅迪达斯;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navegador);
ET2=findViewById(R.id.ET1);
按钮bot=findviewbyd(R.id.bot);
tam=getIntent().getIntExtra(“numero”,0);
Medidas=新阵列列表();
int contador=0;
System.out.println(“TAMAñO DEL数组:“+tam”);
当(contador你说你想在按下按钮时告诉你的应用程序,做点什么。没有必要使用isPressed()方法。就这样做吧
bot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View bot) {
//When you press this button (bot), codes here will be executed.
MeterMedida();
}
});
您不需要而循环:
//a list to keep all the entered floats
private List<Float> floats = new ArrayList<Float>();
//each time you click the listener is invoked
bot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View bot) {
//every time the button is clicked, fill the current typed float
floats.add(Float.parseFloat(ET2.getText().toString()));
ET2.setText("");
}
});
//保存所有输入浮动的列表
私有列表浮动=新的ArrayList();
//每次单击都会调用侦听器
bot.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(查看bot){
//每次单击按钮时,填充当前键入的浮动
add(Float.parseFloat(ET2.getText().toString());
ET2.setText(“”);
}
});
好吧,我不会给出完整的答案。只是给你自己一些提示
在类级别声明int contador=0;
删除while(contador为什么你需要一个while循环?@HasanBouTaam我需要它来填充用户用EditText一个接一个引入的浮点值数组列表当你设置一个监听器时,无论如何都会有一个循环运行。你不需要自己做。你可以把你所有的逻辑都放到监听器中,当它被触发时,你可以按照我的建议去做你了解Android的事件系统。你永远不需要做一个等待事件发生的循环。Android已经有了这个循环,并且总是有一种方法来注册一个函数,该函数将被称为你想要响应的事件发生。啊,我不知道,好吧,我删除了while,现在效果很好。谢谢,很好,如果有帮助的话ped接受答案,让其他有同样问题的人知道。谢谢你的建议,这两条评论都非常有用。我从这里开始,再次感谢。