如何在安卓系统中编程一个等待输入的while循环?(已解决)

问题描述 投票:0回答:3

我的问题很简单,我可以用什么方法来告诉我的程序有一个按钮被按下?我可以用什么方法来告诉我的程序一个按钮被按下了?在我的日志中,我可以读到这一行--> TAMAÑO DEL CONTADOR: < 数字,直到它达到最大.> 在我可以之前,我甚至可以放置一个值,所以我理解循环不等待我的输入。

这是我的代码。

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);
}
}

非常感谢,如果你需要更多的信息,可以问我。

编辑

和往常一样,少即是多,我去掉了while和contador变量,现在它的工作原理和我想要的一样,而且非常简单。非常感谢你。

java android android-studio methods while-loop
3个回答
2
投票

你不需要一个 while 循环。

    //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("");

        }
    });

3
投票

你说你想告诉你的应用程序 当一个按钮被按下时,做一些事情。没有必要使用isPressed()方法。就像这样做。

 bot.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View bot) {     
            //When you press this button (bot), codes here will be executed.
            MeterMedida();

        }
    });

2
投票

好吧,我不会给出完整的答案。只是给你一些提示,让你自己去弄明白。

  1. 声明 int contador = 0; 同级
  2. 移除 while ( contador <= tam)
  3. 移除 if(bot.isPressed())
  4. 移除 contador++; 在你 onCreate
  5. 内部 MeterMedida() 检验 if(contador <= tam). 如果 true,加到 ArrayList 并增加 contador. 否则显示错误 Toast.
© www.soinside.com 2019 - 2024. All rights reserved.