Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Los modos de navegación de la barra de acción están obsoletos en Android L

Echando un vistazo al informe diff de API para la vista previa de Android "L", veo que todos los métodos relacionados con los modos de navegación en la clase ActionBar (como setNavigationMode() , addTab() , selectTab() , & c). Están ahora obsoletos.

La documentación explica:

Los modos de navegación de la barra de acción están obsoletos y no son compatibles con las barras de acción de la barra de herramientas en línea. Considere la posibilidad de utilizar otros patrones de navegación comunes en su lugar.

¿Cuál es el supuesto reemplazo?

Además, es "barra de herramientas de barra de herramientas en línea" un nuevo concepto? No creo haberlo oído antes.

9 Solutions collect form web for “Los modos de navegación de la barra de acción están obsoletos en Android L”

La nueva Biblioteca de soporte de diseño de Android agrega TabLayout , proporcionando una implementación de pestañas que coincide con las directrices de diseño de material para las pestañas . Se puede encontrar un tutorial completo sobre cómo implementar Tabs y ViewPager en este video

Ahora desaprobado: El PagerTabStrip es parte de la biblioteca de soporte (y lo ha sido desde hace algún tiempo) y sirve como un reemplazo directo. Si prefieres las pestañas de estilo de Google Play más recientes, puedes usar la biblioteca PagerSlidingTabStrip o modificar cualquiera de los ejemplos proporcionados por Google SlidingTabsBasic o SlidingTabsColors como se explica en este video Bytes de Dev .

Ahora que los documentos de Android 5.0 están disponibles, tenemos la documentación oficial para el widget de la barra de herramientas :

Una barra de herramientas estándar para su uso dentro del contenido de la aplicación.

Una barra de herramientas es una generalización de barras de acción para su uso en los diseños de aplicaciones. Mientras que una barra de acción es tradicionalmente parte de la decoración opaca de la ventana de una actividad controlada por el marco, una barra de herramientas se puede colocar en cualquier nivel arbitrario de anidamiento dentro de una jerarquía de vistas .

También se puede usar un widget de Toolbar para reemplazar la barra de acción:

Una aplicación puede optar por designar una barra de herramientas como barra de acción para una actividad mediante el método setActionBar() .

La depreciación de las pestañas en la barra de acción es probablemente debido a esto, ya que las barras de herramientas no pueden contener la pestaña ellos mismos.

Además, está disponible para versiones anteriores de Android a través de la librería appcompat. Ver este post de Chris Banes para más información. Un experto:

Android 5.0 introduce un nuevo widget de la barra de herramientas. Esta es una generalización del patrón ActionBar, pero le da mucho más control y flexibilidad al usarlo. La barra de herramientas es una vista en la jerarquía como cualquier otra, facilitando la intercalación con el resto de las vistas, animando y reaccionando a los eventos de desplazamiento.

Parece que han añadido una nueva clase llamada android.widget.Toolbar que extiende ViewGroup . También agregaron un nuevo método setActionBar(Toolbar) en Activity . No lo he probado aún, pero parece que puedes TabWidgets todo tipo de TabWidgets , Spinners o vistas personalizadas en una Toolbar y usarla como barra de acción.

La nueva Toolbar no se puede utilizar para inflar objetos de varias líneas, por lo que es imposible añadir pestañas a ella.
Si desea utilizar una Toolbar como un TabWidget puede insertar algunos objetos de tabulación, pero sólo con el estilo antiguo de Holo.

Aquí hay una biblioteca personalizada que utiliza la Toolbar v7 como TabWidget con las nuevas animaciones de Material Design, pero utiliza los mismos métodos de las antiguas ActionBar Tabs , por lo que puede adjuntar ViewPager a ella.

Para 'reemplazo' de ActionBar obsoleto, cambié el tipo de mis variables de tipo ActionBar a PagerTabStrip, como por (código antiguo en comentario):

 // ActionBar bigActionBar; PagerTabStrip bigActionBar; 

Un 'reemplazo' para el .selectTab (tabindex) de actionBar era usar el método .setCurrentItem (int) de ViewPager asociado, como este (código antiguo en el comentario):

 /* ActionBar.Tab eventTab = bigActionBar.getTabAt(2); bigActionBar.selectTab(eventTab); */ mViewPager.setCurrentItem(2); 

Espero que esto sea útil.

Tuve el mismo problema y esta solución me fue muy bien:

En el archivo xml de diseño que contiene el viewpager, agregue un PagerTabStrip como se muestra:

 <android.support.v4.view.PagerTabStrip android:id="@+id/pager_tab_strip" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" android:background="#996633" android:textColor="#CCCCCC" android:paddingTop="5dp" android:paddingBottom="5dp" /> 

Para controlar los títulos de las páginas, añada una instrucción switch a su archivo ViewPager:

 @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return "Page 1"; case 1: return "Page 2"; case 2: return "Page 3"; } return null; } 

FragmentTabHost es también una opción.

Este código es del sitio del desarrollador de Android:

 /** * This demonstrates how you can implement switching between the tabs of a * TabHost through fragments, using FragmentTabHost. */ public class FragmentTabs extends FragmentActivity { private FragmentTabHost mTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_tabs); mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"), FragmentStackSupport.CountingFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"), LoaderCursorSupport.CursorLoaderListFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"), LoaderCustomSupport.AppListFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("throttle").setIndicator("Throttle"), LoaderThrottleSupport.ThrottledLoaderListFragment.class, null); } } 

Estos tutoriales me parecieron útiles mientras preparaba una barra de acción (ahora la 'barra de herramientas' – argh) que soporta las pestañas deslizantes con Material Design:

https://www.youtube.com/watch?v=Fl0xMuo10yA

http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html

Tienes que sintetizar estos recursos para adaptarlos a tu situación particular. Por ejemplo, es posible que no quiera crear manualmente las pestañas del mismo estilo que el tutorial de exoguru.com.

Bueno para mí para manejar la barra de herramientas de navegación obsoleto mediante la barra de herramientas v7 widget appcompat.

  setSupportActionBar(toolbar); getSupportActionBar().setSubtitle("Feed Detail"); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //goToWhere } }); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.