with unknown support studio solucion failed error actionbar android android-layout appcompat

android - unknown - AppCompat_v7 Barra de herramientas como barra de acciones que no muestra las acciones "siempre" del menĂº, pero la barra de herramientas de API lo hace



failed to load appcompat actionbar with unknown error. 2018 (3)

Después de 2 días de luchar con la nueva API 21 Toolbar y appCompat_v7, creo que encontré un error en ella. Si tiene 2 acciones en su menú como este:

<item android:id="@+id/action_test" android:showAsAction="always" android:icon="@drawable/ic_launcher" android:title="@string/action_settings"/> <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings"/>

y una barra de herramientas appCompat definida así:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.toolbar.MainActivity" > <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="52dp" android:id="@+id/toolbar"> </android.support.v7.widget.Toolbar> </RelativeLayout>

después de inflar (o configurar el método setSupportActionBar)

Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); toolbar.setTitle("esurance"); setSupportActionBar(toolbar);

obtendrá el menú de la barra de herramientas sin su icono de acción, lo mostrará en el menú de desbordamiento.

Pero, si usa la clase de la barra de herramientas de la API 21, mostrará sus acciones tal como se definen en el diseño de su menú ...

<Toolbar android:layout_width="match_parent" android:layout_height="52dp" android:id="@+id/toolbar"> </Toolbar>

Tal vez me falta algo aquí, pero hasta ahora, no he podido mostrar acciones fuera del menú de desbordamiento usando appCompat. Cualquier ayuda en esto será muy apreciada.


Según el entrenamiento de la barra de acciones , debe usar la app:showAsAction atributos app:showAsAction lugar del atributo android:showAsAction :

Tenga en cuenta que el atributo showAsAction anterior utiliza un espacio de nombre personalizado definido en la etiqueta <menu> . Esto es necesario cuando se utilizan atributos XML definidos por la biblioteca de soporte, ya que estos atributos no existen en el marco de Android en dispositivos más antiguos. Por lo tanto, debe usar su propio espacio de nombre como prefijo para todos los atributos definidos por la biblioteca de soporte.

Entonces su archivo de menú debería verse así:

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/action_test" app:showAsAction="always" android:icon="@drawable/ic_launcher" android:title="@string/action_settings"/> <item android:id="@+id/action_settings" android:orderInCategory="100" app:showAsAction="never" android:title="@string/action_settings"/> </menu>


antes que nada use la app:showAsAction lugar de android:showAsAction (como @ianhanniballake) después de eso en onCreateActionMode después de onCreateActionMode su menú setShowAsAction en un código como este

@Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { mode.getMenuInflater().inflate(R.menu.your_menu_name, menu); menu.findItem(R.id.your_first_menu_id).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); menu.findItem(R.id.your_second_menu_id).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); return true; }

tuve el mismo problema, así que después de trabajar en él, estas líneas de código funcionan bien para mí.


poner

xmlns: app = "http://schemas.android.com/apk/res-auto" int su etiqueta de menú

Me gusta esto

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">

luego usa la app:showAsAction = "always"

Recuerde que use la app:showAsAction en todos los elementos del menú no android:showAsAction

`