Как я могу запрограммировать какое-то время l oop, ожидающее ввода в Android? (Раскрыты) - PullRequest
2 голосов
/ 30 апреля 2020

Мой вопрос прост. Какой метод я могу использовать, чтобы сообщить моей программе, что кнопка нажата? Я пытаюсь некоторые строки кода, но это не очень работает (я пытался с isPressed). в моих журналах я могу прочитать строку -> TAMAÑO DEL CONTADOR: <числа, пока оно не достигнет макс.>, прежде чем я смогу даже поместить значение, поэтому я понимаю, что l oop не ждет моих входных данных.

Вот мой код:

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, теперь она работает так, как я хотел, и довольно проста. Большое вам спасибо.

Ответы [ 3 ]

3 голосов
/ 30 апреля 2020

Вы сказали, что хотите сообщить своему приложению, когда нажата кнопка, что-то сделать. Нет необходимости использовать метод 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 голосов
/ 30 апреля 2020

Ну, я не собираюсь давать полный ответ. Просто несколько советов для себя, чтобы разобраться.

  1. Объявить int contador = 0; на уровне класса
  2. Удалить while ( contador <= tam)
  3. Удалить if(bot.isPressed())
  4. Удалить contador++; в вашем onCreate
  5. Внутри MeterMedida() проверить на if(contador <= tam). Если true, добавьте к ArrayList и увеличьте contador. В противном случае ошибка показа Toast.
2 голосов
/ 30 апреля 2020

Вам не нужно while l oop:

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

        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...