26

Kolejny Android Studio pytanie tutaj:setSupportActionBar

Szukałem na odpowiedź i próbowałem wiele możliwych rozwiązań, ale nic nie wydaje się działać ..

Próbuję konfiguracji Materialny Action Bar po tym tutorialu:

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

Oto mój kod:

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> 

I wreszcie moja 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 !!!! 

Błąd: setSupporActionBar (android. support.v7.widget.Toolbar) w kodzie ActionBarActivity ot być stosowane do (android.widget.Toolbar)

ja naprawdę nie wiem, co robić, rodzaj nowego w tym ...

Odpowiedz

65

In You Activity.java import android.support.v7.widget.Toolbar zamiast android.widget.Toolbar.

poprawna wersja

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

to działa! Wielkie dzięki ! – HGRC

+10

Użyj 'AppCompatActivity' zamiast' ActionBarActivity', ponieważ Google je zamortyzował. – nyxaria

+0

Kiedy używam paska narzędzi w klasie android extens actionbaractivity setsupportActionBar (narzędzie) pokazujący błąd toolup toolupport toolbar v7 błąd appdelegar proszę pomóż mi – Harsha

18

Korzystając pasek narzędzi, który powinien rozciąga AppCompatActivity a następnie zaimportować android.support.v7.widget.Toolbar

+1

Przedłużenie 'AppCompatActivity' dał mi wskazówkę, której mi brakowało. –

8

Aby dodać pasek narzędzi, który obsługuje Materiał konstrukcji, official documentation directions są prawdopodobnie najlepiej do naśladowania.

  1. Dodaj v7 appcompat support library.
  2. Rozszerz zakres działalności AppCompatActivity.

    public class MyActivity extends AppCompatActivity { 
        // ... 
    } 
    
  3. stwierdzenie NoActionBar w manifeście.

    <application 
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
        /> 
    
  4. Dodaj pasek narzędzi do układu xml Twojej aktywności.

    <android.support.v7.widget.Toolbar 
        android:id="@+id/my_toolbar" 
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
        ... 
        /> 
    
  5. połączeń setSupportActionBar w działalność na 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); 
    } 
    

Uwaga: trzeba będzie importować następujące aktywności.

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

Zapomniałem rozszerzyć AppCompatActivity i otrzymywałem niewydane odwołanie na setSupportActionBar. Dzięki! –

2

zaświadczyć, że Twój Manifest deklaracja zawiera android: theme = "@ Styl/AppTheme.NoActionBar" tag, jak następuje:

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