entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Simular clic de botón desde otra clase [Android]

Tengo mi layout "activity_inicio" el cual contiene un botón llamado "btnlistado" dicho botón llama a un método en la clase "Inicio" llamada

public void abrilistado(View view) {}

este método lo que hace es abrir un dialog con un listado, pero dicho listado cambia en base a otras aspectos. La cuestión es:

Tengo otra clase llamada "GetDistance" el cual realiza una serie de cálculos y demás, que al final me arroja un resultado dicho resultado se lo quiero pasar al listado que abre el botón "btnlistado", lo que quiero hacer es que después de realizar la operación el dialog se despliegue con el resultado, pero no se como activar el dialog desde otra clase, o en su caso llamar al evento clic del boton que activa el dialog (btnlistado).

Investigue que con esto funcionaba:

 Button btn ;
 btn = (Button)findViewById(R.id.btnlistado);
 btn.performClick();

coloco el cogido en mi clase "GetDistance" pero me marca error cuando llega a la segunda linea. Y no puedo llamar al método "abrilistado" desde la clase GetDistance porque me pide ponerlo "static" lo cual si lo hago me marca error en el showDialog(0);

Alguna otra opción para hacerlo funcionar?

0voto

egoitz_gonzalez comentado

No te he entendido muy bien. Puedes ponernos un poco mas de código por favor?

0voto

wroque comentado

tienes que hacer lo que te dicen bien trabajas con un activity fragment o creas una clase con el método de calculo, luego lo llamas en ambos activitys.

1 Respuesta

4votos

cobasESP Puntos19650

Hola, para usar un elemento o cambiar algo de este, tienes que hacerlo desde la clase padre que lo creo, no puedes acceder a un boton de actividad1 si estas en la actividad2, y te falla en la segunda linea porque :

btn = (Button)findViewById(R.id.btnlistado);

estas diciendo que btn es el btnlistado que encontrará en la vista pero la vista de la otra activity no hay ese botón o ni siquiera una vista al ser una clase que guarde métodos solamente (como un helper class). El compilador te pone como solución que lo pongas static pero eso te traerá problemas mas adelante porque igualmente no te abrirá.

No se como tendrás construida la app pero te recomiendo que utilices fragments con un menu de navegador, porque asi aunque el fragmen cambie siempre estaras en la misma activity y podrás acceder a todos los métodos que declararás en esta.

La otra opcion es copiar y pegar el código que te abre el alertdialog y pegarlo en todas las activitys donde lo vayas a usar, pero es un poco cutre y tanto repetir código al final te acabara llevando a que no sepas ni donde estas. Aun así paga algo de código a ver si te podemos ayudar mas :)

0voto

Andhii1293 comentado

En efecto mi error era que quería acceder a un botón de actividad1 desde actividad2, al final lo solución mas simple fue que el resultado de mi actividad2 se lo pase a la actividad1 y dicha actividad se encargue de abrir el dialog con el resultado que le corresponde.

Gracias por la explicación.

0voto

wroque comentado

entonces no estas haciendo uso de la navegavilidad, al iniciar otro activity, al menos encontraste alguna forma de crear un singleton del activity que vuelves a llamar ?

0voto

cobasESP comentado

Claro, para ello hay que usar fragments que es al o que me refiero, al hacerlo con activity pierdes esa funcionalidad

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta