it-swarm.com.de

die setSupportActionBar-Symbolleiste kann nicht auf den Fehler (Android.widget.Toolbar) angewendet werden

Ich habe nach einer Antwort gesucht und viele mögliche Lösungen ausprobiert, aber nichts scheint zu funktionieren.

Ich versuche, eine Material-Aktionsleiste nach diesem Tutorial einzurichten.

Hier ist mein 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>

Und zum Schluss meine Tätigkeit.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) in ActionBarActivity kann nicht angewendet werden (Android.widget.Toolbar)

Wie kann ich das beheben?

42
HGRC

In Ihrem Activity.Java-Import Android.support.v7.widget.Toolbar anstelle von 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

Bei der Verwendung der Symbolleiste sollten Sie AppCompatActivity erweitern und anschließend Android.support.v7.widget.Toolbar importieren 

21

Um eine Toolbar hinzuzufügen, die Material Design unterstützt, sind die offiziellen Dokumentationsanweisungen wahrscheinlich die besten, die befolgt werden können.

  1. Fügen Sie die v7 appcompat-Unterstützungsbibliothek hinzu .
  2. Machen Sie Ihre Aktivität um AppCompatActivity.

    public class MyActivity extends AppCompatActivity {
      // ...
    }
    
  3. Deklarieren Sie NoActionBar im Manifest.

    <application
        Android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
  4. Fügen Sie dem XML-Layout Ihrer Aktivität eine Symbolleiste hinzu.

    <Android.support.v7.widget.Toolbar
       Android:id="@+id/my_toolbar"
       Android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       ...
       />
    
  5. Rufen Sie setSupportActionBar in der onCreate der Aktivität auf.

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

Hinweis: Sie müssen Folgendes in die Aktivität importieren.

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

Stellen Sie sicher, dass Ihre Manifest-Deklaration Android: theme = "@ style/AppTheme.NoActionBar" tag enthält, wie folgt:

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

Für Android-Version über 3:  

import androidx.appcompat.widget.Toolbar; 

Für Android-Version 3:  

import Android.widget.Toolbar;

2
Messou

Nur ändern

import Android.widget.Toolbar;

Zu

import Android.support.v7.widget.Toolbar;
1
Samer Kasseb

Durch das Hinzufügen von Import Android.support.v7.widget.Toolbar zur Importliste wird dieses Problem behoben.

Fügen Sie dann die Symbolleisten-Widget-Layoutdatei hinzu: 

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

In der onCreate-Methode des Java-Codes

//call to

Tootbar-Symbolleiste = findViewById (R.id.toolbar); SetSupportActionBar (Symbolleiste);

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

1
trustidkid

Mit dem Hinzufügen von androidx in Studio 3.0+ ist die Toolbar-Kompatibilität jetzt in einer neuen Bibliothek verfügbar, auf die so zugegriffen werden kann

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

importieren Sie Android.support.v7.widget.Toolbar; importieren Sie es in Ihre Java-Klasse

0
Vickie Kangare

Ich habe zuvor diesen Code verwendet:

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

und erweiterte AppCompatActivity auch aber ich habe den gleichen Fehler bekommen ..__ Also anstelle von Toolbar class habe ich die unten stehende Klasse importiert und es hat für mich funktioniert:

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

Ich habe das gleiche Problem. Meine Logcat sagt

Java.lang.IllegalStateException: Diese Aktivität hat bereits eine Aktion Bar vom Fensterdekor geliefert

Ich habe bereits eine Aktionsleiste. Wenn ich setSupportActionBar(toolbar); verwende, wird bei meiner App für diesen Konflikt ein Fehler angezeigt. Um dieses Problem zu beheben, fügen Sie NoActionBar in Ihre App-Motivstil-Ressourcendatei ein.

Ändere das 

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

Zu diesem 

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

0

klasse muss eine Erweiterung von AppCompatActivity sein, um das Problem von setSuppertActionBar zu lösen, das nicht erkannt werden kann

0
Mosayeb Masoumi

Der Name der Toolbar kann einfach mit geändert werden

Android:label="My Activity"

in Ihrer Manifest-Datei. Ich habe gerade Manifest durchlaufen & gefunden

Android:label 

Hilft bei der Anpassung an die jeweilige Aktivität. Ich hoffe, Sie werden es versuchen

0
Rushabh Gedam