Подтвердить что ты не робот

Панель инструментов setSupportActionBar не может быть применена к ошибке (android.widget.Toolbar)

Я искал ответ и перепробовал множество возможных решений, но, похоже, ничего не работает..

Я пытаюсь настроить панель действий материала после этого урока.

Вот мой код:

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>

И, наконец, моя активность.

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 THE PROBLEM !!!!

Ошибка:

setSupporActionBar (android.support.v7.widget.Toolbar) в ActionBarActivity не может быть применен к (android.widget.Toolbar)

Как я могу это исправить?

4b9b3361

Ответ 1

В вашем Activity.java импортируйте android.support.v7.widget.Toolbar вместо 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 !!!!

Ответ 2

При использовании панели инструментов вы должны расширить AppCompatActivity и

import android.support.v7.widget.Toolbar 

Ответ 3

Для добавления панели инструментов, поддерживающей Material Design, лучше всего следовать официальным указаниям по документации.

  1. Добавьте библиотеку поддержки app7 для v7.
  2. Заставьте свою деятельность расширять AppCompatActivity.

    public class MyActivity extends AppCompatActivity {
      // ...
    }
    
  3. NoActionBar в Манифесте.

    <application
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        />
    
  4. Добавьте панель инструментов в свой макет xml своей деятельности.

    <android.support.v7.widget.Toolbar
       android:id="@+id/my_toolbar"
       android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       ...
       />
    
  5. Вызовите setSupportActionBar в 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);
    }
    

Примечание. Вам нужно будет импортировать следующее в упражнении.

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

Ответ 4

Для версии Android выше 3:

import androidx.appcompat.widget.Toolbar;

Для версии Android ниже 3:

import android.widget.Toolbar;

Ответ 5

Подтвердите, что в объявлении манифеста содержится тег android: theme = "@style/AppTheme.NoActionBar" , например:

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

Ответ 6

Добавление импорта android.support.v7.widget.Toolbar в список импорта решает эту проблему.

Затем добавьте файл макета виджета панели инструментов:

<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"
    />

В методе onCreate Java-кода

//call to

Панель инструментов Tootbar = findViewById (R.id.toolbar); setSupportActionBar (панель инструментов);

Источник: https://developer.android.com/training/appbar/up-action

Ответ 7

класс должен быть расширен от AppCompatActivity, чтобы решить проблему с setSuppertActionBar, которая не распознается

Ответ 8

Просто поменяй

import android.widget.Toolbar;

к

import android.support.v7.widget.Toolbar;

Ответ 9

import android.support.v7.widget.Toolbar;

импортировать его в свой класс Java

Ответ 10

Я использовал ранее этот код:

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

и расширенный AppCompatActivity также, но я получаю ту же ошибку. Поэтому вместо использования класса Toolbar я импортировал приведенный ниже класс, и он работал для меня:

android.support.v7.widget.Toolbar

Ответ 11

У меня та же проблема. Мой Logcat говорит

java.lang.IllegalStateException: у этого действия уже есть панель действий, предоставленная декором окна

У меня уже есть панель действий, поэтому, когда я использую setSupportActionBar(toolbar); мое приложение получает ошибку для этого конфликта. Чтобы решить эту проблему, добавьте NoActionBar в файл ресурсов стиля темы вашего приложения.

Изменить это

<style name="ParentMaterialTheme" parent="Theme.AppCompat.Light">

К этому

<style name="ParentMaterialTheme" parent="Theme.AppCompat.Light.NoActionBar">

Ответ 12

С добавлением androidx в Studio 3. 0+ совместимость панели инструментов теперь в новой библиотеке, доступной вот так

import androidx.appcompat.widget.Toolbar

Ответ 13

вставить импорт android.support.v7.widget.Toolbar; если вы получили ошибку с панелью инструментов в mainacctivity

Ответ 14

Название панели инструментов можно легко изменить с помощью

android:label="My Activity"

в вашем файле манифеста. Я только что прошел Манифест и нашел

android:label 

Помогает изменить в зависимости от конкретной деятельности, надеюсь, вы попробуете

Ответ 15

В You MainActivity.java импорт android.support.v7.widget.Toolbar вставка java программы