web-dev-qa-db-fra.com

la barre d’outils setSupportActionBar ne peut pas être appliquée à l’erreur (Android.widget.Toolbar)

Je cherchais une réponse et j'ai essayé plusieurs solutions possibles, mais rien ne semble fonctionner.

J'essaye d'installer une barre d'action matérielle après ce tutoriel .

Voici mon code:

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>

activity.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>

Et enfin mon activité.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 !!!!

Erreur: 

setSupporActionBar (Android.support.v7.widget.Toolbar) dans ActionBarActivity ne peut être appliqué à (Android.widget.Toolbar)

Comment puis-je réparer cela?

42
HGRC

Dans votre Activity.Java import Android.support.v7.widget.Toolbar au lieu 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 !!!!
116
Mohit Singh

En utilisant la barre d’outils, vous devez étendre AppCompatActivity puis importer Android.support.v7.widget.Toolbar 

21
Kirti Chaturvedi

Pour ajouter une barre d'outils prenant en charge Material Design, les instructions de documentation officielles sont probablement les meilleures à suivre.

  1. Ajoutez la bibliothèque de support v7 appcompat .
  2. Faites votre activité étendre AppCompatActivity.

    public class MyActivity extends AppCompatActivity {
      // ...
    }
    
  3. Déclarez NoActionBar dans le manifeste.

    <application
        Android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
  4. Ajoutez une barre d'outils à la mise en page XML de votre activité.

    <Android.support.v7.widget.Toolbar
       Android:id="@+id/my_toolbar"
       Android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       ...
       />
    
  5. Appelez setSupportActionBar dans la onCreate de l'activité.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);
        Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);
    }
    

Remarque: Vous devrez importer les éléments suivants dans l'activité.

import Android.support.v7.app.AppCompatActivity;
import Android.support.v7.widget.Toolbar;
15
Suragch

Certifiez que votre déclaration Manifest inclut Android: theme = "@ style/AppTheme.NoActionBar" tag, comme suit:

<activity
    Android:name=".PointsScreen"
    Android:theme="@style/AppTheme.NoActionBar">
</activity>
2
mathias.horn

Pour la version Android supérieure à 3:  

import androidx.appcompat.widget.Toolbar; 

Pour la version Android ci-dessous 3:  

import Android.widget.Toolbar;

2
Messou

L'ajout de l'importation Android.support.v7.widget.Toolbar à la liste d'importation résout ce problème.

Ajoutez ensuite le fichier de présentation du widget de la barre d’outils: 

<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"
    />

Dans la méthode onCreate du code Java

//call to

Barre d'outils Barre d'outils = findViewById (R.id.toolbar); SetSupportActionBar (barre d'outils);

Source: https://developer.Android.com/training/appbar/up-action

1
trustidkid

Avec l'ajout d'androidx dans Studio 3.0+, la compatibilité de la barre d'outils est maintenant intégrée dans une nouvelle bibliothèque, accessible comme ceci.

import androidx.appcompat.widget.Toolbar
0
Fa-C-Shus

importer Android.support.v7.widget.Toolbar; l'importer dans votre classe Java

0
Vickie Kangare

J'utilisais auparavant ce code:

Toolbar toolbar =  findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

et étendu AppCompatActivity également mais je recevais la même erreur . Donc au lieu d'utiliser Toolbar class, j'ai importé la classe ci-dessous et cela a fonctionné pour moi:

Android.support.v7.widget.Toolbar
0
amit pandya

J'ai le même problème. Mon Logcat dit

Java.lang.IllegalStateException: cette activité a déjà une action bar fourni par le décor de la fenêtre

J'ai déjà une barre d'action, donc lorsque j'utilise setSupportActionBar(toolbar);, mon application reçoit une erreur pour ce conflit. Pour résoudre ce problème, ajoutez NoActionBar dans votre fichier de ressources de style de thème d'application.

Change ça 

<style name="ParentMaterialTheme" parent="Theme.AppCompat.Light">

Pour ça 

<style name="ParentMaterialTheme" parent="Theme.AppCompat.Light.NoActionBar">

0
Tahmid Bin Rashid

la classe doit être une extension de AppCompatActivity pour résoudre le problème de setSuppertActionBar non reconnaissable

0
Mosayeb Masoumi