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?
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 !!!!
Bei der Verwendung der Symbolleiste sollten Sie AppCompatActivity erweitern und anschließend Android.support.v7.widget.Toolbar importieren
Um eine Toolbar hinzuzufügen, die Material Design unterstützt, sind die offiziellen Dokumentationsanweisungen wahrscheinlich die besten, die befolgt werden können.
Machen Sie Ihre Aktivität um AppCompatActivity
.
public class MyActivity extends AppCompatActivity {
// ...
}
Deklarieren Sie NoActionBar
im Manifest.
<application
Android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
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"
...
/>
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;
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>
Für Android-Version über 3:
import androidx.appcompat.widget.Toolbar;
Für Android-Version 3:
import Android.widget.Toolbar;
Nur ändern
import Android.widget.Toolbar;
Zu
import Android.support.v7.widget.Toolbar;
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
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
importieren Sie Android.support.v7.widget.Toolbar; importieren Sie es in Ihre Java-Klasse
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
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">
klasse muss eine Erweiterung von AppCompatActivity sein, um das Problem von setSuppertActionBar zu lösen, das nicht erkannt werden kann
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