De Fragment a otra Actividad (Layout) por medio de un Boton

9,278 views
Skip to first unread message

LúMoon Aguilar

unread,
Nov 17, 2015, 3:14:43 AM11/17/15
to desarrolladores-android

Hola .... Buenas madrugadas....

Soy nueva en el grupo... disculpen... espero me puedan apoyar con un ejemplo...


Necesito abrir una nueva actividad (layout) por medio de un botón que se encuentra en un Fragment...

Por favor... esto ya me esta atormentando.... :'(


De antemano les agradezco...

Gabriel Pozo

unread,
Nov 17, 2015, 5:25:54 AM11/17/15
to desarrolladores-android

http://stackoverflow.com/questions/15478105/start-an-activity-from-a-fragment


--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/8h8ez2
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/f15f41fb-c6e7-4b5d-a978-aa26210d033f%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Eduardo Martin Cabrera

unread,
Nov 17, 2015, 8:05:55 AM11/17/15
to desarrolladores-android
Mini tutorial

1) Abri Android Studio y crear un nuevo proyecto, dale el nombre que desees al proyecto y en Activity Name deja el nombre de MainActivity para la actividad principal, para el Activity principal elegí una de tipo "Blanck Activity with Fragment" y dale hasta que se crea el proyecto.
2) Crea una segunda actividad (File->New->Activity->Blank Activity) puede ser de cualquier otro tipo puse de ese a modo de ejemplo; y en Activity Name nombrarla "SegundaActivity" 
3) en el layout del fragment agrega el botón, llamalo btnLanzar
4) en la clase del fragment cambia el onCreateView, para obtener la referencia del botón y meterle un click listener

por defecto, a.studio te habrá generado un código como :

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

return inflater.inflate(R.layout.fragment_main, container, false);
}


explicacion simple y pobre:
esto retorna un View y ese view se obtuvo inflando el layout xml del fragment.
Pero como necesitamos hacer cosas con los elementos que hay ahi (en nuestro caso el botón) cambiamos el código 
para poder usar ese view (obtener las referencias a los widgets, manipularlos, ponerles listeners), luego eso si devolvemos el View.

lo que necesitamos hacer es:
  • obtener ese view, encontrar el boton (findViewBy.....)
  • poner el click listener 
  • devolver la vista (view);

asi deberia quedar el onCreateView


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_main, container, false);

Button btnLanzarActivity = (Button) view.findViewById(R.id.btnLanzar);
btnLanzarActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),SegundaActivity.class);
startActivity(intent);
}
});
return view;
}

nota: después de obtener el view, el resto de código obtener el botón (findView...), poner el listener (setOnClickListener) es casi igual a hacerlo en una activity

con la siguiente salvedades:
para obtener el botón con el método findViewBy....
1- el metodo findview es el de la view obtenida desde inflater.inflate, el fragment no lo tiene como sucede en las activity

para lanzar otra actividad
2- en el intent el primer parámetro (que seria el origen) usamos getActivity, si esto lo hacías en un activity era algo como MainActivity.this osea, usando un formato: [nombreclase].this, el segundo para es como siempre y sigue el formato nombre_de_clase.class



Eduardo Martin Cabrera

unread,
Nov 18, 2015, 6:31:42 AM11/18/15
to desarrolladores-android
Recomendación: evita usar el atributo android:onclick para setear listeners en los layouts.xml, si usas fragments no funcionará, ademas el uso de esa característica esta desaconsejada (fue un atajo o facilidad para los desarrolladores novatos de la primer época) se dice que esta mal porque se coloca "lógica" en un lugar donde debería ir solo "vista"

Juan David Redondo Robles

unread,
Jun 8, 2017, 10:34:42 PM6/8/17
to desarrolladores-android

gracias me sirvio
 
Reply all
Reply to author
Forward
0 new messages