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

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

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

вот мой код:

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>

активности.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>

и, наконец, моя деятельность.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 !!!!

ошибка:

setSupporActionBar (android.поддержка.В7.штучка.Панель инструментов) в ActionBarActivity не может быть применена к (android.штучка.Панель инструментов)

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

10 ответов


в своем 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 !!!!

в панели инструментов вы должны расширить AppCompatActivity, а затем импортировать android.поддержка.В7.штучка.Панель инструментов


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

  1. добавить библиотека поддержки V7 appcompat.
  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;

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

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

добавление импорта android.поддержка.В7.штучка.Панель инструментов в списке импорт устранить эту проблему.

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

<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.панель инструментов); setSupportActionBar (панель инструментов);

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


импорт android.поддержка.В7.штучка.Панель инструментов; импортируйте его в свой класс java


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

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

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

android.support.v7.widget.Toolbar

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

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

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

изменить это

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

этой

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


с добавлением androidx в Studio 3.0 + совместимость панели инструментов теперь находится в новой библиотеке, доступной так

import androidx.appcompat.widget.Toolbar

В Вы В MainActivity.Java импорт android .поддержка.В7.штучка.Вставка панели инструментов программы java