26

Eine weitere Android Studio Frage hier:setSupportActionBar Toolbar Fehler

Ich habe nach einer Antwort suchen, und ich habe viele möglichen Lösungen ausprobiert, aber nichts scheint zu funktionieren ..

ich bin versucht Setup a Material Aktionsleiste nach diesem Tutorial:

http://www.android4devs.com/2014/12/how-to-make-material-design-app.html

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:orientation="vertical" android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <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 schließlich mein activity.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 !!!! 

Fehler: setSupporActionBar (android. support.v7.widget.Toolbar) in ActionBarActivity cann ot bis (android.widget.Toolbar) angewendet werden

Ich weiß wirklich nicht, was zu tun Art von neu in diesem ...

Antwort

65

In You Activity.java Import android.support.v7.widget.Toolbar statt android.widget.Toolbar.

richtige Version

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 !!!! 
+0

Es hat funktioniert! Danke vielmals ! – HGRC

+10

Verwenden Sie "AppCompatActivity" anstelle von "ActionBarActivity", da Google es abgeschrieben hat. – nyxaria

+0

Wenn ich Symbolleiste in Android-Klasse verwenden extens actionbaractivity setsupportActionBar (tool) zeigt Fehler setsupport toolbar v7 appdelegar Fehler bitte helfen Sie mir – Harsha

18

In Symbolleiste Sie sollten AppCompatActivity erstreckt und importieren dann android.support.v7.widget.Toolbar

+1

Erweitert 'AppCompatActivity' gab mir den Schlüssel, den ich fehlte. –

8

Für eine ToolBar hinzufügen, die Material Design unterstützt, sind die official documentation directions wahrscheinlich die am besten zu folgen.

  1. Fügen Sie die v7 appcompat support library hinzu.
  2. Machen Sie Ihre Aktivität zu erweitern AppCompatActivity.

    public class MyActivity extends AppCompatActivity { 
        // ... 
    } 
    
  3. Deklarieren 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. Anruf setSupportActionBar in der Tätigkeit des 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); 
    } 
    

Hinweis: Sie die folgenden in der Aktivität zu importieren.

import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
+0

Sie haben vergessen, AppCompatActivity zu erweitern und eine nicht aufgelöste Referenz auf setSupportActionBar erhalten. Vielen Dank! –

2

Zertifizieren, dass Ihr Manifest Erklärung android enthält: theme = "@ style/AppTheme.NoActionBar" Tag, wie folgt aus:

<activity 
    android:name=".PointsScreen" 
    android:theme="@style/AppTheme.NoActionBar"> 
</activity>