Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 12/09/13, 20:23:26
Array

[xs_avatar]
varoo10 varoo10 no está en línea
Usuario muy activo
· Votos compra/venta: (8)
 
Fecha de registro: jul 2011
Localización: Córdoba
Mensajes: 620
Modelo de smartphone: Samsung Galaxy Note 2
Tu operador: Yoigo
Utilizar activities en Navigation Drawer

Estoy cansado de buscar así que vengo a preguntar por aquí a ver si me lo resuelven.

Bueno ahora mismo estoy empezando una aplicación en la que quiero utilizar Navigation Drawer. Resulta que sólo he conseguido que funcione con fragments siguiendo un tutorial y éste sería mi código.

Código:
public class MainActivity extends ActionBarActivity {
	
	private String[] opcionesMenu;
    private DrawerLayout drawerLayout;
    private ListView drawerList;
    private ActionBarDrawerToggle drawerToggle;
    
    private CharSequence tituloSeccion;  
    private CharSequence tituloApp;  

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		opcionesMenu = new String[] {"Opción 1", "Opción 2", "Opción 3"};
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawerList = (ListView) findViewById(R.id.left_drawer);

        drawerList.setAdapter(new ArrayAdapter<String>(
        		getSupportActionBar().getThemedContext(),
                android.R.layout.simple_list_item_1, opcionesMenu));
        
		drawerList.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {

				Fragment fragment = null;

				switch (position) {
					case 0:
						fragment = new Fragment1();
						break;
					case 1:
						fragment = new Fragment2();
						break;
					case 2:
						fragment = new Fragment3();
						break;
				}

				FragmentManager fragmentManager = 
						getSupportFragmentManager();
				
				fragmentManager.beginTransaction()
						.replace(R.id.content_frame, fragment)
						.commit();

				drawerList.setItemChecked(position, true);

				tituloSeccion = opcionesMenu[position];
				getSupportActionBar().setTitle(tituloSeccion);

				drawerLayout.closeDrawer(drawerList);
			}
		});
		
		tituloSeccion = getTitle();
		tituloApp = getTitle();
		
		drawerToggle = new ActionBarDrawerToggle(this, 
				drawerLayout,
				R.drawable.ic_navigation_drawer, 
				R.string.drawer_open,
				R.string.drawer_close) {

			public void onDrawerClosed(View view) {
				getSupportActionBar().setTitle(tituloSeccion);
				ActivityCompat.invalidateOptionsMenu(MainActivity.this);
			}

			public void onDrawerOpened(View drawerView) {
				getSupportActionBar().setTitle(tituloApp);
				ActivityCompat.invalidateOptionsMenu(MainActivity.this);
			}
		};

		drawerLayout.setDrawerListener(drawerToggle);
		
		getSupportActionBar().setDisplayHomeAsUpEnabled(true);
		getSupportActionBar().setHomeButtonEnabled(true);
	}
Utilizando Activities en vez de Fragments se solucionarían problemas cómo por ejemplo escalabrarte la cabeza a la hora de utilizar botones o un error que me acaba de ocurrir que és que la actividad principal se me queda de fondo y al entrar a un fragment lógicamente no se ve bien.
__________________
Estrenando Samsung Galaxy Note 2 con

Emotion Note II v3.1 GT-N7100
Responder Con Cita


  #2  
Viejo 12/09/13, 20:37:01
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Si puedes, poniendo un NavigationDrawer en cada Activity.

De todas formas si tienes problemas con Fragments es simplemente por no saber usarlos. Yo uso SlidingPaneLayout con Fragments y no tengo ningún problema. Si el "escalabrarte la cabeza" es por tener un botón en la Activity que se tiene que comunicar con el Fragment (o viceversa), desde la Activity puedes acceder al Fragment mediante el propio objeto del Fragment, y desde el Fragment a la Actvity mediante "getActivity()" (y casteando después)

La programación con Fragments cuando la controlas te ahorra mucho tiempo, yo he tenido casos de usar el mismo Fragment para 2 Activities distintas con ViewPager que uno de los elementos del ViewPager era el mismo Fragment pero el resto eran distintos.
Responder Con Cita
  #3  
Viejo 12/09/13, 20:38:54
Array

[xs_avatar]
varoo10 varoo10 no está en línea
Usuario muy activo
· Votos compra/venta: (8)
 
Fecha de registro: jul 2011
Localización: Córdoba
Mensajes: 620
Modelo de smartphone: Samsung Galaxy Note 2
Tu operador: Yoigo
A ver yo se que se puede poner navigation en cada activity, lo que no sé en el código como enlazar navigation drawer con otras activities.
__________________
Estrenando Samsung Galaxy Note 2 con

Emotion Note II v3.1 GT-N7100
Responder Con Cita
  #4  
Viejo 12/09/13, 21:01:54
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Pues en el onItemClick en vez de inicializar un Fragment, inicializas un Intent. Y al final del todo en vez de reemplazar el Fragment haces un "startActivity". Ya para rematar puedes hacer un "finish". Así el usuario cuando le de atrás no volverá al Activity anterior, y tendrá la sensación de que simplemente ha estado cambiando el contenido.

Eso si, pierdes el efecto de al seleccionar un nuevo elemento ver como cambia y después se cierra el Navigation Drawer. Además de ser un proceso más lento que simplemente cambiar el Fragment. También deberías de desactivar las animaciones de entrada y salida de la Activity, para que el impacto al usuario sea menor:

overridePendingTransition(0,0); //Entre el startActivity y el finish
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 16:08:35 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /