56

I've been looking for an answer and I've tried many possible solutions, but nothing seems to work..

I'm trying to setup a Material Action Bar following this tutorial.

Here's my 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>

And finally my 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 !!!!

Error:

setSupporActionBar (android.support.v7.widget.Toolbar) in ActionBarActivity cannot be applied to (android.widget.Toolbar)

How can I fix this?

Zoe
  • 27,060
  • 21
  • 118
  • 148
HGRC
  • 577
  • 1
  • 5
  • 7

13 Answers13

172

In your Activity.java import android.support.v7.widget.Toolbar instead of 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 !!!!

Update:

If you are using androidx, replace

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

with newer imports

import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.app.AppCompatActivity;
Mohit
  • 2,608
  • 1
  • 22
  • 21
  • 14
    Use `AppCompatActivity` instead of `ActionBarActivity` as Google has depreciated it. – nyxaria Aug 09 '15 at 17:25
  • 2
    when i use toolbar in android class extens actionbaractivity setsupportActionBar(tool) showing error setsupport toolbar v7 appdelegar error please help me – Harsha Aug 12 '15 at 12:47
23

In using toolbar you should extends AppCompatActivity and

import android.support.v7.widget.Toolbar 
Zoe
  • 27,060
  • 21
  • 118
  • 148
Kirti Chaturvedi
  • 1,245
  • 13
  • 24
19

For adding a ToolBar that supports Material Design, the official documentation directions are probably the best to follow.

  1. Add the v7 appcompat support library.
  2. Make your activity extend AppCompatActivity.

    public class MyActivity extends AppCompatActivity {
      // ...
    }
    
  3. Declare NoActionBar in the Manifest.

    <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
  4. Add a toolbar to your activity's xml layout.

    <android.support.v7.widget.Toolbar
       android:id="@+id/my_toolbar"
       android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       ...
       />
    
  5. Call setSupportActionBar in the activity's 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);
    }
    

Note: You will have to import the following in the activity.

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
Suragch
  • 484,302
  • 314
  • 1,365
  • 1,393
  • Forgot to extend AppCompatActivity and was getting an Unresolved Reference on setSupportActionBar. Thanks! – Mike Miller Oct 12 '17 at 20:10
  • @AbhinavSaxena stop spamming other people's answers with a link to another answer. –  Feb 06 '19 at 18:19
8

For Android version above 3:

import androidx.appcompat.widget.Toolbar;

For Android version below 3:

import android.widget.Toolbar;
akelec
  • 3,797
  • 3
  • 41
  • 39
M E S A B O
  • 783
  • 1
  • 11
  • 15
5

With the addition of androidx in Studio 3.0+ the Toolbar compatibility is now in a new library, accessible like this

import androidx.appcompat.widget.Toolbar
Aurelius Prochazka
  • 4,510
  • 2
  • 11
  • 34
Fa-C-Shus
  • 51
  • 1
  • 2
2

Certify that your Manifest declaration includes android:theme="@style/AppTheme.NoActionBar" tag, like the following:

<activity
    android:name=".PointsScreen"
    android:theme="@style/AppTheme.NoActionBar">
</activity>
mathias.horn
  • 241
  • 1
  • 8
  • 12
2

Adding import android.support.v7.widget.Toolbar to the import list resolve this issue.

Then add the toolbar widget layout file:

<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 onCreate method of java code

//call to

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

Source: https://developer.android.com/training/appbar/up-action

trustidkid
  • 577
  • 4
  • 6
1

class must be extend of AppCompatActivity to resolve the problem of setSuppertActionBar that is not recognizable

Mosayeb Masoumi
  • 481
  • 4
  • 10
1

Just change

import android.widget.Toolbar;

To

import android.support.v7.widget.Toolbar;
Zoe
  • 27,060
  • 21
  • 118
  • 148
Samer Kasseb
  • 192
  • 3
  • 10
1

ToolBar's name can easily be changed using

android:label="My Activity"

in your Manifest File. I just going through Manifest & found

android:label 

Helps to change according to the specific activity, Hope you'll give it a try

Rushabh Gedam
  • 310
  • 1
  • 4
  • 11
0

I was using previously this code:

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

and extended AppCompatActivity also but I was getting the same error. So in place of using Toolbar class, I have imported the below class and it worked for me:

android.support.v7.widget.Toolbar
amit pandya
  • 1,384
  • 13
  • 22
-1
import android.support.v7.widget.Toolbar;

import it into your java class

Zoe
  • 27,060
  • 21
  • 118
  • 148
-2

In You MainActivity.java import android .support.v7.widget.Toolbar insert of java program

Manideep
  • 353
  • 3
  • 13