Usar la barra de herramientas en todas las actividades (Android)
Estoy usando una barra de herramientas para reemplazar el ActionBar. Todo va bien con un problema:
La barra de herramientas sólo se muestra en la actividad principal.
- El botón Inicio de la barra de herramientas no funciona si no hay ningún menú de opciones
- Comportamiento incorrecto de los atributos de la gravedad de las vistas secundarias de la nueva barra de herramientas Android
- Cómo arreglar el método getActionBar puede producir java.lang.NullPointerException
- El botón de inicio de la barra de herramientas de Android no aparece
- Cómo cambiar el color de la barra de herramientas y los colores de la barra de estado de acuerdo con el color de la imagen en el diseño de material android?
Si intento llamar a la barra de herramientas en cualquier actividad de la misma manera que hice con la actividad principal, la aplicación se bloqueará cuando llamo a esa actividad.
Si intento inflar la barra de herramientas onCreateOptionsMenu, esa actividad se bloqueará cuando la llame.
¿Cómo puedo llamar / utilizar la misma barra de herramientas en todas mis actividades y no sólo la principal.
Aquí hay algunas piezas del código:
public android.support.v7.widget.Toolbar toolbar; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.app_bar_id); setSupportActionBar(toolbar); }
El código anterior funciona para llamar a la barra de herramientas con éxito, pero sólo funciona si la uso en la actividad principal, el resto de las actividades se bloquearán si llamé a la barra de herramientas allí el mismo método mostrado anteriormente.
Alguna ayuda por favor?
Gracias.
Editado:
A petición aquí hay más fragmentos de código:
App_bar.xml:
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/actionbarbgcolor" app:popupTheme="@style/popUpTheme"> </android.support.v7.widget.Toolbar>
Themes.xml (sustitución styles.xml):
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools"> <style name="DefaultActionBarTheme" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowNoTitle">true</item> <item name="android:windowActionBar">false</item> <item name="android:textColorPrimary">@color/windowbackgroundcolor</item> <item name="android:windowBackground">@color/windowbackgroundcolor</item> </style> <style name="popUpTheme"> <item name="android:textColor">@color/actionbarbgcolor</item> </style> </resources>
- Icono de navegación de la barra de herramientas nunca configurado
- El cajón de navegación en android no está en pantalla completa
- No solicite Window.FEATURE_ACTION_BAR y defina windowActionBar como false en su tema para usar una barra de herramientas en su lugar
- Configurar la barra de herramientas como barra de acción en fragmento
- OnCreateOptionsMenu no recibe llamadas en Android 7.0
- Título, etc. que no se muestran en la barra de herramientas de Android
- Android: cambia las direcciones completas de la distribución de la aplicación mediante programación
- Barra de herramientas Android mostrar / ocultar espacio en blanco
Encontré la solución, me olvidé de incluir la barra de herramientas en el resto de los archivos de diseño de actividades. Así que estaba llamando a una barra de herramientas que no existía en el diseño de esa actividad.
Sólo lo había incluido en la actividad principal, así que por eso trabajó allí y se estrelló en el resto.
Para los principiantes, esto significa que el código siguiente debe existir en cada archivo xml de diseño en el que desea que funcione la barra de herramientas:
<include layout="@layout/app_bar"/>
Tenga en cuenta que "app_bar" es sólo el nombre con el que he llamado mi barra de herramientas, el suyo puede ser diferente.
Buena suerte.
Puede crear un diseño con código de seguimiento que contenga barra de herramientas
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:fitsSystemWindows="true" tools:context="com.tejariapp.myapplicationtester1.MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> </android.support.design.widget.CoordinatorLayout>
Presta atención al valor de altura, si no lo configura como valor de wrap_content puedes ver que otros elementos pasaron debajo de la barra de herramientas y luego en cada diseño que deseas tener barra de herramientas, simplemente puedes escribir esto
<include layout="@layout/toolabar" />