¿Cómo abrir un nuevo fragmento del cajón de navegación?

Estoy utilizando las guías developer.android.com para crear una aplicación. Elegí "Navigation: Navigation Drawer" cuando hice un nuevo proyecto en Android Studio. He buscado en Internet respuestas a mis preguntas, pero no puedo encontrar ninguna que funcione. Lo siento por esto, soy nuevo en la programación.

  1. ¿Cómo hago que mi aplicación abra un nuevo fragmento en la vista principal al hacer clic en el cajón de navegación?
  2. ¿Es posible abrir múltiples fragmentos que se pueden deslizar con pestañas al hacer clic en el cajón de navegación?
  3. ¿Cómo hago un "título" expandible / plegable?

Http://developer.android.com/design/patterns/navigation-drawer.html http://developer.android.com/training/implementing-navigation/nav-drawer.html

Así es como quiero que el diseño sea:

Mi diseño

Title_section * no section_title;)

El cajón de la navegación es un diseño nuevo y de tendencia actualmente. Utilizamos dos diseños: diseño del contenido principal y diseño de la lista de cajones mientras diseñamos el xml.layout (diseño) para la actividad del cajón de navegación. Aquí estoy respondiendo a todas sus preguntas tontas.

¿Cómo hago que mi aplicación abra un nuevo fragmento en la vista principal al hacer clic en el cajón de navegación?

Simplemente agregue clicklistener en los elementos de la lista de cajones y reemplace los fragmentos en el contenido principal dependiendo de la posición del elemento de lista que haya hecho clic.

Código de muestra:

// The click listener for ListView in the navigation drawer @SuppressWarnings("unused") private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { selectItem(position); } } private void selectItem(int position) { Fragment newFragment; FragmentTransaction transaction = getFragmentManager().beginTransaction(); switch (position) { case 0: newFragment = new f1(); transaction.replace(R.id.content_frame, newFragment); transaction.addToBackStack(null); transaction.commit(); break; case 1: newFragment = new f2(); transaction.replace(R.id.content_frame, newFragment); transaction.addToBackStack(null); transaction.commit(); break; case 2: newFragment = new f3(); transaction.replace(R.id.content_frame, newFragment); transaction.addToBackStack(null); transaction.commit(); break; case 3: newFragment = new f4(); transaction.replace(R.id.content_frame, newFragment); transaction.addToBackStack(null); transaction.commit(); break; } //DrawerList.setItemChecked(position, true); setTitle(ListTitles[position]); DrawerLayout.closeDrawer(DrawerList); } 

Aquí f1, f2. F3 y f4 son fragmentos diferentes cada uno con su propio diseño. Tienes que crear clases java separadas para ellos heredando la clase de fragmento.

¿Es posible abrir múltiples fragmentos que se pueden deslizar con pestañas al hacer clic en el cajón de navegación?

Para implementar las pestañas dentro de un fragmento puede usar un tabhost dentro de ese fragmento en particular. Suponga que desea agregar pestañas en el fragmento f_main.

Diseño de F_main.xml

 <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:orientation="horizontal" /> <FrameLayout android:id="@+id/tabFrameLayout" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> </TabHost> 

A continuación, haga otros fragmentos f_tab1 y f_tab2 con sus correspondientes layouts y clases java. Los diseños para los dos fragmentos de lengüeta pueden ser iguales o diferentes. Aquí estoy tomando los mismos o un diseño común.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/google_map" android:layout_height="wrap_content" android:layout_width="match_parent" android:text="MAP"/> </LinearLayout> 

Código para el fragmento F_tab1.java

 import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class F_tab1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.friends_list, container,false); return view; } } 

Código para otro fragmento. Es decir, F_tab2.java

 import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class F_tab2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.friends_list, container,false); return view; } } 

Ahora simplemente use clicklistener en la lista de cajones como se mencionó anteriormente para cargar F_main en el elemento haga clic en la lista de cajones que seguirá cargando las pestañas en F_main fragmnet en la vista de contenido principal.

¿Cómo hago un "título" expandible / plegable?

Bueno, no sé cuándo el cajón NV ofrece esta característica o no. Pero proporciona una característica para alternar el título de la barra de acción dependiendo del elemento de cajón seleccionado o del fragmento de contenido principal cargado.

Como se describe en la guía de diseño del Cajón de Navegación, debe modificar el contenido de la barra de acción cuando el cajón esté visible, como cambiar el título y eliminar los elementos de acción que sean contextuales con el contenido principal. El código siguiente muestra cómo puede hacerlo al reemplazar los métodos de devolución de llamada de DrawerLayout.DrawerListener con una instancia de la clase ActionBarDrawerToggle como sigue

  public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mDrawerTitle; private CharSequence mTitle; ... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ... mTitle = mDrawerTitle = getTitle(); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { /** Called when a drawer has settled in a completely closed state. */ public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } /** Called when a drawer has settled in a completely open state. */ public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() } }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle); } /* Called whenever we call invalidateOptionsMenu() */ @Override public boolean onPrepareOptionsMenu(Menu menu) { // If the nav drawer is open, hide action items related to the content view boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); menu.findItem(R.id.action_websearch).setVisible(!drawerOpen); return super.onPrepareOptionsMenu(menu); } } 
  • ¿Puedo abrir el diseño del cajón con animación mediante programación?
  • Desplazamiento de izquierda a derecha con el visor y el cajón de navegación
  • Cómo hacer navegación personalizada ver animaciones como ésta
  • Notificación de la divisa en la barra de herramientas en la barra de herramientas - Android
  • Imitando el cajón de navegación de la aplicación youtube / gmail
  • Android - Navegación personalizada
  • No se puede resolver el método getActivity ()
  • Utilizar smoothScrollTo en Fragmento
  • ¿Cuál es el propósito de las herramientas: openDrawer = "start" al crear un DrawerLayout (con NavigationView) desde el asistente?
  • Norma de arquitectura de Android MVP para cargar interfaz de usuario con clase Model que tiene recurso android
  • Cajón de navegación Cambia el fondo mientras se desplaza
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.