setSupportActionBar toolbar ne peut pas être appliqué à (android.widget.Barre d'outils) erreur

j'ai cherché une réponse et j'ai essayé de nombreuses solutions possibles, mais rien ne semble fonctionner..

j'essaie de mettre en place une barre D'Action matérielle en suivant 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>

activité.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.soutien.v7.widget.Barre d'outils) dans ActionBarActivity ne peut pas être appliqué à la base d'android.widget.Barre d'outils)

Comment puis-je résoudre ce problème?

33
demandé sur Omar Einea 2015-03-13 09:14:23

10 réponses

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 !!!!
90
répondu Mohit Singh 2018-06-08 22:49:15

en utilisant la barre d'outils, vous devriez étendre AppCompatActivity et ensuite importer android.soutien.v7.widget.Barre d'outils

21
répondu Kirti Chaturvedi 2015-10-20 16:37:53

pour ajouter une barre d'outils qui supporte la conception des matériaux, le documents officiels instructions sont probablement les meilleurs à suivre.

  1. Ajouter v7 appcompat bibliothèque de prise en charge.
  2. faites que votre activité s'étende AppCompatActivity.

    public class MyActivity extends AppCompatActivity {
      // ...
    }
    
  3. déclarez NoActionBar dans le Manifeste.

    <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
  4. ajouter une barre d'outils au xml de votre activité disposition.

    <android.support.v7.widget.Toolbar
       android:id="@+id/my_toolbar"
       android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       ...
       />
    
  5. Appel setSupportActionBar dans la onCreate.

    @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 ce qui suit dans l'activité.

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
13
répondu Suragch 2017-10-13 02:41:44

certifiez que votre déclaration de manifeste comprend android:thème="@style/AppTheme.NoActionBar" balise, comme suit:

<activity
    android:name=".PointsScreen"
    android:theme="@style/AppTheme.NoActionBar">
</activity>
2
répondu mathias.horn 2017-11-04 18:21:25

ajout d'importation android.soutien.v7.widget.Barre d'outils de la liste d'importation résoudre ce problème.

puis ajouter le fichier de mise en page 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 de code java

//call to

Tootbar toolbar = findViewById (R. id.barre d'outils); setSupportActionBar(barre d'outils);

https://developer.android.com/training/appbar/up-action

1
répondu trustidkid 2018-09-07 20:37:09

importer androïde.soutien.v7.widget.Barre; l'importer dans votre classe java

0
répondu Vickie Kangare 2018-06-21 08:08:53

j'utilisais précédemment ce code:

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

et L'Appcompatactivité étendue aussi mais je recevais la même erreur. Donc, à la place de l'aide Barre d'outils classe, j'ai importé le dessous de la classe et il a travaillé pour moi:

android.support.v7.widget.Toolbar
0
répondu amit pandya 2018-06-23 10:17:59

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

java.lang.IllegalStateException: cette activité a déjà une action barre fournie par le décor de la fenêtre

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

Modifier

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

De cette

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

0
répondu Tahmid Bin Rashid 2018-07-28 04:19:30

avec l'ajout d'androidx dans Studio 3.0+ la compatibilité de la barre D'outils est maintenant dans une nouvelle bibliothèque, accessible comme ceci

import androidx.appcompat.widget.Toolbar
0
répondu Fa-C-Shus 2018-09-16 22:06:40

Dans Votre Activité Principale.Java import android .soutien.v7.widget.Barre d'outils insérer de programme java

-1
répondu Manideep 2018-05-11 13:05:10