setSupportActionBar toolbar cannot be applied to (android.widget.Toolbar) error
AndroidAndroid ActionbarMaterial DesignToolbarAndroid Problem Overview
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?
Android Solutions
Solution 1 - Android
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;
Solution 2 - Android
In using toolbar you should extends AppCompatActivity and
import android.support.v7.widget.Toolbar
Solution 3 - Android
For adding a ToolBar that supports Material Design, the official documentation directions are probably the best to follow.
-
Add the v7 appcompat support library.
-
Make your activity extend
AppCompatActivity
.public class MyActivity extends AppCompatActivity { // ... }
-
Declare
NoActionBar
in the Manifest.<application android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
-
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" ... />
-
Call
setSupportActionBar
in the activity'sonCreate
.@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;
Solution 4 - Android
For Android version above 3:
import androidx.appcompat.widget.Toolbar;
For Android version below 3:
import android.widget.Toolbar;
Solution 5 - Android
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
Solution 6 - Android
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>
Solution 7 - Android
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
Solution 8 - Android
class must be extend of AppCompatActivity to resolve the problem of setSuppertActionBar that is not recognizable
Solution 9 - Android
Just change
import android.widget.Toolbar;
To
import android.support.v7.widget.Toolbar;
Solution 10 - Android
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
Solution 11 - Android
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
Solution 12 - Android
import android.support.v7.widget.Toolbar;
import it into your java class
Solution 13 - Android
In You MainActivity.java import android .support.v7.widget.Toolbar insert of java program