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

1voto

NavigationDrawer en todas las Activities (Android)

Buenos días compañeros, desde hace tiempo eh venido usando navigationDrawer en varios de mis proyectos.
Algunos clientes quieren que persista el menú en todas las actividades. Hasta ahora no eh podido lograrlo con éxito.. Trate de hacerlo una vez pero no pude , Hice el uso de la herencia y si puedo tener el menú en otras activities pero no funciona correctamente..

El Arbol de mi aplicacion es el siguiente:

MainActivity (Tiene navigationDrawer)
......Fragment 1 (aqui hay un boton que me manda a la activity 1.1)
..........Activity 1.1 (esta debe tener el NavigationDrawer)
......Fragment 2 (aqui hay un boton que me manda a la activity 2.1)
..........Activity 2.1 (esta debe tener el NavigationDrawer)

Los pasos que sigo para realizar son los siguientes:

En el MainActivity.class, inicializo como protected la variable de tipo DrawerLayout.

protected DrawerLayout drawlayout = null;

Si utilizo el siguiente código dentro del método onCreate no me funciona lo que quiero hacer, lo que hace es seleccionar la primera vista y asi muestre algo en pantalla.:

  if (savedInstanceState == null) {

selectItem(0);
}

Cada uno de los Items del NavigationDrawer lleva a un Fragment, dentro del fragment supongamos que existe un boton que me lleva a alguna activity..

La actividas la tengo incializada de la siguiente manera:

extiendo a la classe MainActivitty

public class Categorias extends MainActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View contentView = inflater.inflate(R.layout.activity_categorias, null, false);
    drawlayout.addView(contentView, 0);

}

Y me funciona perfecto, muestra el navigation drawer, pero esto solo lo hace si en el MainActivty no puestro ningun Item por Default...

y eso es la lineas de codigo que mensione antes:

if (savedInstanceState == null) {
        selectItem(0);
    }

Pero no es logico que al entrar a la aplicacion no me muestre nada... es por eso que no se que hacer ya, por que si no muestro nada al inciar la app, funciona perfecto.. Pero si muestro un item por default Ya no me funciona...Espero aberme explicado bien.

Espero me puedan ayudar.. Gracias de antemano. Saludos.!!

1 Respuesta

1voto

Novus Ordo Seclorum Puntos4810

Me respondo a mi mismo después de investigar llegue a la concluir de que no es buena practica combinar fragments con activities, Si en lugar de abrir una activity mandamos llamar un Fragment el Menu del NavigationDrawer, sigue estando en el mismo lugar ya que el fragment solo se sobrepuso arriba del otro..

Para mandar llamar el nuevo fragment solo use las siguientes lineas de codigo:

   FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
NombreNuevoFragment fragment1 = new NombreNuevoFragment ();
ft.replace(R.id.content_frame, fragment1);
//ft.addToBackStack(null);

fragment1.setArguments(bundle);
ft.commit();

el addToBackStack sirve para que cuando oprimamos el boton de back, se vaya al fragment anterior...

Saludos..!!

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