Java - Ayuda con este código. Quiero crear dos botones que al presionarlos a la vez accionen un evento.

 
Vista:

Ayuda con este código. Quiero crear dos botones que al presionarlos a la vez accionen un evento.

Publicado por Alexis Aguirre (2 intervenciones) el 27/05/2019 01:22:52
El problema es que el evento "run" también se acciona si aprieto un botón y después el otro. Lo que yo quiero conseguir es que únicamente se accione cuando el boton1 y el boton2 son presionados a la vez.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.example.probarboton;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
public class MainActivity<boton1> extends AppCompatActivity {
 
    private Button boton1, boton2;
 
    private int estado1 = 0;
    private int estado2 = 0;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
 
        boton1 = (Button) findViewById(R.id.button1);
        boton2 = (Button) findViewById(R.id.button2);
 
        boton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                estado1 = 1;
                run();
            }
        });
 
 
        boton2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                estado2 = 1;
                run();
            }
        });
 
 
 
}
 
 
       public void run() {
 
           if ((estado1 == 1) & (estado2 == 1)) {
 
               Toast toast1 = Toast.makeText(getApplicationContext(), "Estado1 y Estado2 en 1", Toast.LENGTH_SHORT);
               toast1.setGravity(Gravity.CENTER, 0, 0);
               toast1.show();estado1 = 0; estado2 = 0;
           }
     }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con este código. Quiero crear dos botones que al presionarlos a la vez accionen un evento.

Publicado por Billy Joel (876 intervenciones) el 27/05/2019 02:43:35
supongo que lo que cuando sueltas el boton1 o boton2 el estado1 o estado2 deben volver a 0.
En ese caso algo como esto podría servir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
boton1.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            estado1 = 1;
            run();
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            estado1 = 0;
        }
    }
};
 
boton2.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            estado2 = 1;
            run();
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            estado2 = 0;
        }
    }
};

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con este código. Quiero crear dos botones que al presionarlos a la vez accionen un evento.

Publicado por Alexis Aguirre (2 intervenciones) el 27/05/2019 02:58:07
El problema es que al poner onTouch el evento se accionaria una vez que uno aprieta los dos botones y yo necesito que se accione cuando uno retira las manos de los botones, por eso usé onClick, pero con onClick no puedo usar el MotionEvent.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con este código. Quiero crear dos botones que al presionarlos a la vez accionen un evento.

Publicado por Kabuto (1381 intervenciones) el 28/05/2019 00:09:35
Las varaibles estado1 y estado 2 son accesibles para ambos Listener, así que quizás tras alterar un "estado" se puede preguntar por el otro "estado" para decidir si se invoca a run() o no.
Pero la verdad, al tratarse de un proceso simultáneo, no se que tal funcionará..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
boton1.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            estado1 = 1;
            if (estado2 == 1)
               run();
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            estado1 = 0;
        }
    }
};
 
boton2.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN) {
            estado2 = 1;
            if (estado1 == 1)
            run();
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            estado2 = 0;
        }
    }
};
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar