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?
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 !!!!
en utilisant la barre d'outils, vous devriez étendre AppCompatActivity et ensuite importer android.soutien.v7.widget.Barre d'outils
pour ajouter une barre d'outils qui supporte la conception des matériaux, le documents officiels instructions sont probablement les meilleurs à suivre.
- Ajouter v7 appcompat bibliothèque de prise en charge.
faites que votre activité s'étende
AppCompatActivity
.public class MyActivity extends AppCompatActivity { // ... }
déclarez
NoActionBar
dans le Manifeste.<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
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" ... />
Appel
setSupportActionBar
dans laonCreate
.@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;
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>
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-actionimporter androïde.soutien.v7.widget.Barre; l'importer dans votre classe java
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
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">
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
Dans Votre Activité Principale.Java import android .soutien.v7.widget.Barre d'outils insérer de programme java