Android Tabs + Sliding, ¿cómo implemento ActionBarSherlock?
Estoy utilizando las nuevas herramientas de Google para iniciar una aplicación que tiene la capacidad de cambiar entre tres pestañas.
- ¿Cómo comparar dos arraylist?
- Java.lang.IllegalStateException: Se esperaba BEGIN_ARRAY pero era BEGIN_OBJECT en la línea 1 de la columna 2
- PreferenciaActividad con varios archivos de preferencias
- métodos en foreach y para bucles en java
- Edición de voz durante la llamada - Android
Esto es genial, pero carece de soporte para dispositivos antiguos.
1. He añadido ABS con la biblioteca de soporte a la aplicación.
2. He cambiado public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
a public class MainActivity extends SherlockFragmentActivity implements ActionBar.TabListener {
3. Todavía me queda un montón de errores, y ni siquiera sé si esto funcionará correctamente en los dispositivos más antiguos. ¿Alguien tiene consejos sobre cómo implementar pestañas deslizantes compatibles con 2.x y más?
Actualizar:
Estoy atascado en el paso 6 de la respuesta de alextsc
- ¿Qué tamaño debe tener el icono en un alerta?
- Cómo mostrar los contactos en un listview en Android para Android api 11+
- Json a clases de datos kotlin
- Logcat rellenado con java.io.IOException: Mensajes de rechazo de conexión
- Al extraer adt-bundle-windows-x86_64-20140702 este error de Windows 8
- BitmapFactory.decodeResource devuelve un mapa de bits mutable en Android 2.2 y un mapa de bits inmutable en Android 1.6
- Android - Administrador de etiquetas de Google con Google Analytics y Firebase Analytics
- Android Push Notificación del dispositivo a otros dispositivos
El mismo proceso funcionó para mí. Quité todas las importaciones y presioné ctrl + shift + o y seleccioné las clases de compatibilidad. Funcionó absoulutely bien. Ver el post aquí .
He intentado este asistente una vez y creo que tiré el código generado completamente cuando implementé este patrón exacto con ActionBarSherlock, por lo que le sugiero comenzar con una actividad normal "en blanco" desde cero. Aquí hay una pequeña guía paso a paso. No todos los pasos se describen completamente, pero debe encontrar suficiente documentación con las palabras clave para empezar.
1) Agregue ActionBarSherlock a su proyecto (obviamente)
2) Cree una nueva actividad que extienda SherlockFragmentActivity
y establezca un tema apropiado de abs
Debería tener una actividad en blanco con una barra de acción en este punto.
3) Cambie el diseño e incluya un ViewPager que rellene la ventana de visualización
4) Escriba sus fragmentos (o marcadores de posición por ahora) y el adaptador para ViewPager, conecte estos juntos
Hay un montón de tutoriales por ahí que explican todo lo necesario aquí, por ejemplo, esta entrada del blog .
Esto le dará una actividad con una barra de acción y un diseño deslizable. Ahora puede pasar entre sus fragmentos.
5) Agregue las pestañas de la barra de acción y adjunte un listener blanco a ellas
Ejemplo:
actionBar = getSupportActionBar(); sampleTab = actionBar.newTab() .setText(R.string.title) .setTag(TABTAG_SAMPLE) .setTabListener(tabListener); actionBar.addTab(sampleTab);
Asegúrese de dar a cada una de sus pestañas una etiqueta individual (una cadena const está bien). Esto se utilizará para identificar qué pestaña se hace clic en un segundo. También asegúrese de mantener las instancias de tabulación creadas en una variable de clase. Los necesitará más adelante. Repita el fragmento anterior para cada ficha. Puede usar un TabListener normal, pero recomiendo usar el SimpleTabListener ya que solo necesita anular un método más tarde.
Ahora debe tener una actividad con la barra de acción, fragmentos que se pueden deslizar y pestañas (no funcionales).
6) Llene el oyente de la pestaña y conéctelo al viewpager
private SimpleTabListener tabListener = new SimpleTabListener() { @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { final String tag = (String) tab.getTag(); if (TABTAG_SAMPLE.equals(tag)) { viewPager.setCurrentItem(INDEX_SAMPLE); } else if (TABTAG_SECONDTAB.equals(tag)) { viewPager.setCurrentItem(INDEX_SECONDFRAGMENT); } } };
Esto debería ser sencillo. Escucha un evento de selección de ficha, comprueba qué pestaña se selecciona mediante la etiqueta guardada y llama al método setCurrentItem()
los viewpagers con el índice del fragmento que está asociado con una determinada pestaña.
Ahora usted debe ser capaz de seleccionar un fragmento a través de una pestaña, así como deslizar alrededor. Observará que el desplazamiento a un fragmento determinado no sincronizará las pestañas en consecuencia, no se seleccionará correctamente todavía.
7) Adjuntar un OnPageChangeListener a su ViewPager y seleccionar las pestañas en consecuencia
Una vez más, puede utilizar un SimpleOnPageChangeListener aquí también en lugar de la interfaz. Ejemplo corto:
private SimpleOnPageChangeListener onPageChangeListener = new SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { switch (position) { case INDEX_SAMPLE: actionBar.selectTab(sampleTab); break; case INDEX_SECONDFRAGMENT: actionBar.selectTab(secondTab); break; } }; };
Esto también debe ser auto-explicativo. Observa una acción de desplazamiento que cambia el fragmento que se muestra, comprueba su índice y selecciona la pestaña apropiada. Vea aquí por qué tenía que mantener las instancias de tabulación desde el paso 5 alrededor, necesita que seleccione una pestaña.
Todo debería funcionar ahora.
Yo recomendaría echar un vistazo a ViewPagerIndicator funciona con ActionBarSherlock y la biblioteca de compatibilidad, actualmente tengo una aplicación que utiliza esto para pasar las pestañas en 2.2 y más.
He implementado la aplicación muy complicada usando barra de acción sherlock. Funciona bien en 2.2 a los dispositivos ICS que he probado. También usé pestañas y todo funciona bien. Lo cambié más tarde a la lista de navegación porque debería haber 6 pestañas. Pruebe las demos incluidas con la barra de acción para empezar. Estos errores son probablemente algunos problemas de classpath. Es necesario agregar sherlock como lib proyecto y la biblioteca de soporte debe ser incluido en el proyecto sherlock lib y su proyecto. También compruebe si ambas bibliotecas de soporte deben tener las mismas versiones.
No puedo agregar comentarios, así que este es mi comentario a ViewPagerIndicator. Yo solía hacerlo, pero cuando empecé a usar cargadores para cargar datos y fragmentadapter a veces había problemas extraños cuando llegaban nuevos datos, la orientación cambiaba … Pero usar las pestañas con actionbarsherlock ViewPagerIndicator no es necesario.
- Android: busca si el audio está en reproducción y páralo
- Android Error: Debe proporcionar el atributo layout_width