26

Un'altra Studio Android domanda qui:setSupportActionBar

Ho cercato una risposta e ho provato molte soluzioni possibili, ma nulla sembra funzionare ..

sto cercando di impostare un'azione Bar Materiale seguendo questo tutorial:

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

Ecco il mio codice:

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> 

E infine il mio 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 !!!! 

Errore: setSupporActionBar (Android. support.v7.widget.Toolbar) in ActionBarActivity cann ot essere applicato (android.widget.Toolbar)

Io davvero non so cosa fare, una sorta di nuovo a questo ...

risposta

65

In You Activity.java importazione android.support.v7.widget.Toolbar invece di android.widget.Toolbar.

versione corretta

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

Ha funzionato! Molte grazie ! – HGRC

+10

Usa 'AppCompatActivity' invece di' ActionBarActivity' mentre Google lo ha svalutato. – nyxaria

+0

quando uso la barra degli strumenti nella classe android extens actionbaractivity setsupportActionBar (tool) che mostra errore setsupport toolbar v7 appdelegar error please help me – Harsha

18

In usando barra degli strumenti si dovrebbe estende AppCompatActivity e quindi importare android.support.v7.widget.Toolbar

+1

Estende 'AppCompatActivity 'mi ha dato l'indizio che mi mancava. –

8

Per l'aggiunta di una barra degli strumenti che supporta Material Design, il official documentation directions sono probabilmente la meglio seguire.

  1. Aggiungere v7 appcompat support library.
  2. Aumenta la tua attività AppCompatActivity.

    public class MyActivity extends AppCompatActivity { 
        // ... 
    } 
    
  3. Dichiarare NoActionBar nel manifesto.

    <application 
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" 
        /> 
    
  4. Aggiungi una barra degli strumenti al layout xml della tua attività.

    <android.support.v7.widget.Toolbar 
        android:id="@+id/my_toolbar" 
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
        ... 
        /> 
    
  5. Chiamata setSupportActionBar nell'attività di 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); 
    } 
    

Nota: Si dovrà importare i seguenti nell'attività.

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

Hai dimenticato di estendere AppCompatActivity e ricevevo un riferimento non risolto su setSupportActionBar. Grazie! –

2

certificare che la vostra dichiarazione manifesto include android: theme = "@ stile/AppTheme.NoActionBar" tag, come la seguente:

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