example - La barra de herramientas setSupportActionBar no se puede aplicar al error(android.widget.Toolbar)
toolbar material design android (10)
Agregar importación android.support.v7.widget.Toolbar a la lista de importación resuelve este problema.
Luego agregue el archivo de diseño del widget de la barra de herramientas:
<android.support.v7.widget.Toolbar
android:id="@+id/list_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
/>
En el método onCreate de código java
//call to
Tootbar toolbar = findViewById (R.id.toolbar); setSupportActionBar (barra de herramientas);
Fuente: https://developer.android.com/training/appbar/up-action
He estado buscando una respuesta y he intentado muchas soluciones posibles, pero nada parece funcionar ...
Estoy intentando configurar una barra de acción material siguiendo este tutorial .
Aquí está mi código:
tool_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/ColorPrimary"
android:elevation="4dp">
</android.support.v7.widget.Toolbar>
actividad.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF">
<!-- The main content view -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/app_bar"
layout="@layout/tool_bar" />
</RelativeLayout>
<!-- Navigation Drawer -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="220dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#1C1C1C"
android:divider="@android:color/darker_gray"
android:dividerHeight="1dp" />
</android.support.v4.widget.DrawerLayout>
Y finalmente mi actividad.java:
import android.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toolbar;
public class rutaActivity extends ActionBarActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ruta);
getSupportActionBar().hide();//Ocultar ActivityBar anterior
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar); //HERE''S THE PROBLEM !!!!
Error:
setSupporActionBar (android.support.v7.widget.Toolbar) en ActionBarActivity no se puede aplicar a (android.widget.Toolbar)
¿Cómo puedo arreglar esto?
Al usar la barra de herramientas, debe extender AppCompatActivity y luego importar android.support.v7.widget.Toolbar
Certifique que su declaración de manifiesto incluye la etiqueta android: theme = "@ style / AppTheme.NoActionBar" , como la siguiente:
<activity
android:name=".PointsScreen"
android:theme="@style/AppTheme.NoActionBar">
</activity>
Con la adición de androidx en Studio 3.0+, la compatibilidad de la barra de herramientas ahora se encuentra en una nueva biblioteca, accesible de este modo
import androidx.appcompat.widget.Toolbar
En Usted MainActivity.java importar android .support.v7.widget.Toolbar insertar del programa java
En su Activity.java
importe android.support.v7.widget.Toolbar
lugar de android.widget.Toolbar
:
import android.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.widget.Toolbar;
public class rutaActivity extends AppCompactActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ruta);
getSupportActionBar().hide();//Ocultar ActivityBar anterior
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar); //NO PROBLEM !!!!
Estoy teniendo el mismo problema. Mi Logcat
dice
java.lang.IllegalStateException: esta actividad ya tiene una barra de acción provista por la decoración de la ventana
Ya tengo una barra de acción, así que cuando uso setSupportActionBar(toolbar);
Mi aplicación recibe un error por este conflicto. Para solucionar este problema, agregue NoActionBar
en su archivo de recursos de estilo de tema de aplicación.
Cambia esto
<style name="ParentMaterialTheme" parent="Theme.AppCompat.Light">
A esto
<style name="ParentMaterialTheme" parent="Theme.AppCompat.Light.NoActionBar">
Para agregar una barra de herramientas que admita Material Design, las instrucciones oficiales de la documentación son probablemente las mejores a seguir.
- Agregue la biblioteca de soporte v7 appcompat .
Haz que tu actividad extienda
AppCompatActivity
.public class MyActivity extends AppCompatActivity { // ... }
NoActionBar
en el Manifiesto.<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
Añade una barra de herramientas al diseño xml de tu actividad.
<android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" ... />
Llame a
setSupportActionBar
ensetSupportActionBar
de la actividad.@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); setSupportActionBar(myToolbar); }
Nota: Deberás importar lo siguiente en la actividad.
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
Yo estaba usando previamente este código:
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
y extendí AppCompatActivity también pero estaba recibiendo el mismo error. Así que en lugar de usar la clase de la barra de herramientas , importé la siguiente clase y funcionó para mí:
android.support.v7.widget.Toolbar
importar android.support.v7.widget.Toolbar; importalo a tu clase java