Android: ¿Cómo puedo navegar de un "detalle" a otro "detalle", mientras que el botón "Arriba" vuelve a la lista "Maestro"?

Tengo un patrón de detalle maestro en mi aplicación, pero quiero que el detalle sea capaz de cambiar las vistas. Quiero ahorrar tanto espacio como sea posible para que el "contenido" sea agradable y espacioso. ¿Cómo puedo navegar de un "detalle" a otro "detalle", mientras que el botón "Arriba" vuelve a la lista "Maestro"? (Vea la flecha entre "Detalle 1" y "Detalle 2" en mi foto).

Introduzca aquí la descripción de la imagen

He pasado mucho tiempo pensando en esto y la investigación de diversos métodos de hacer esto, e incluso le preguntó una pregunta de desbordamiento de pila ( ¿Cómo hacer algo como Drop Down Navigation en Android (ya que parece que se ha convertido en obsoleto?) ) Y Todavía estoy esperando una respuesta útil. Incluso si tengo esa pregunta contestada, no estoy seguro de que realmente funcionaría con el flujo de detalle maestro como este.

Si Master-Detail no funciona, ¿cuál sería la mejor manera de lograr este diseño de interfaz de usuario que tengo en mente? ¿Alguien ha hecho algo así antes? ¡Gracias!


Edit: Idealmente, también me gustaría que el usuario pueda establecer una vista "Predeterminada" (Detalle 1 o Detalle 2) que será la primera pantalla que aparecerá después de hacer clic en un elemento de la lista Maestro.


Edición 2: tuve la idea de usar un ViewPager para realizar la transición entre el Detalle 1 y el Detalle 2. No estoy seguro si funcionará. O bien, podría hacer que el Detalle 2 fuera una actividad adicional del Detalle 1, pero no quiero dejar espacio para un botón en mi área de "contenido". Realmente no puedo usar un cajón porque el icono del cajón va en el mismo lugar que la flecha "Arriba". Estoy perdido porque creo que el cajón es mejor para esta situación, pero no puedo usarlo porque ya estoy usando la flecha "Arriba".


Edit 3: Traté de pensar en una aplicación que hizo lo que estoy tratando de hacer, y creo que "Kindle" hace esto bien. Tiene que cambiar entre cada página de un libro, pero primero tienes que elegir un libro. Mientras está en un libro en Kindle, la Barra de Acción y el Cajón de Navegación cambian a blanco y el primer elemento del Cajón de Navegación es "Biblioteca". Al hacer clic en "Biblioteca", se lleva a una actividad completamente diferente con una barra de acción negra y un cajón de navegación negro con diferentes elementos de menú. Por lo tanto, creo que esta es probablemente la ruta que debo tomar. Probablemente ya no tendría un botón "Arriba", y sólo usar el primer elemento del cajón para actuar como un botón "Arriba". Todavía estoy interesado en aprender y considerar todas mis opciones, sin embargo.

Esta es una alternativa al uso de Fragment s y ViewPager (ya que normalmente podrían terminar en códigos más calificados).

Coloque toda la vista de su detalle en un layout.xml y cambie su visibilidad a través de View.setVisibility() al hacer clic en un botón. Puede etiquetar este botón como "Continuar", "Siguiente" o lo que sea. La idea principal es hacer que el usuario consciente de que están en el mismo contexto a pesar del cambio de pantalla.

He aquí una ilustración sobre cómo organizar el layout.xml su detalle:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/layout_page_1" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="visible"> <!-- Put your detail 1 content here --> </LinearLayout> <LinearLayout android:id="@+id/layout_page_2" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone"> <!-- Put your detail 2 content here --> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Continue" android:id="@+id/bt_continue"/> </RelativeLayout> 

Como he dicho, la idea es cambiar la visibilidad de layout_page_1 y layout_page_2 en bt_continue hizo clic en:

 @Override public void onClick(View v) { if(v.getId() == R.id.bt_continue) { layoutPage1.setVisibility(View.INVISIBLE); layoutPage2.setVisibility(View.GONE); } } 

Con esta lógica, también podría implementar un botón "Anterior" para volver a la primera página de su detalle.

Si desea que su usuario pueda establecer una vista predeterminada, también es fácil. Simplemente guarde un int en SharedPreferences que representará la página que se abrirá, es decir, la vista que se establecerá en View.VISIBLE , la primera vez que el usuario abra la vista de detalle.

Yo resolvería que así:

  • Maestro (fragmento dentro de MainActivity)
  • Detalle 1 (fragmento dentro de FirstDetailActivity)
  • Detalle 2 (fragmento dentro de SecondDetailActivity)

Archivo de manifiesto (por ejemplo):

 <application> <!-- The main/home activity (it has no parent activity) --> <activity android:name="...MainActivity" ...> ... </activity> <!-- First detail activity --> <activity android:name="...FirstDetailActivity" android:parentActivityName="...MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="...MainActivity" /> </activity> <!-- Second detail activity --> <activity android:name="...SecondDetailActivity" android:parentActivityName="...MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="...MainActivity" /> </activity> </application> 

Así que básicamente:

  1. Haga clic en la lista (Master) abre FirstDetailActivity
  2. Haga clic en FirstDetailActivity (Tab, Spinner, Botón, etc.) abre SecondDetailActivity
  3. Up de FirstDetailActivity o SecondDetailActivity proporciona navegación a MainActivity

Referencia: http://developer.android.com/training/implementing-navigation/ancestral.html

Implemente sus páginas de detalle como fragmentos y utilice un ViewPager para contener ambos. De esta manera, el usuario puede, pasando a izquierda o derecha, cambiar entre los dos. Si miras la aplicación de Gmail por ejemplo, allí también puedes deslizarte por tus datos de correo una vez que hayas abierto uno de la lista de correo.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.