it-swarm.com.ru

панель инструментов 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'S THE PROBLEM !!!!

Ошибка: 

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

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

42
HGRC

В вашем 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 !!!!
116
Mohit Singh

При использовании панели инструментов вы должны расширить AppCompatActivity, а затем импортировать Android.support.v7.widget.Toolbar 

21
Kirti Chaturvedi

Для добавления панели инструментов, поддерживающей 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;
15
Suragch

Убедитесь, что ваше объявление Manifest включает Android: theme = "@ style/AppTheme.NoActionBar" , как показано ниже:

<activity
    Android:name=".PointsScreen"
    Android:theme="@style/AppTheme.NoActionBar">
</activity>
2
mathias.horn

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

import androidx.appcompat.widget.Toolbar; 

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

import Android.widget.Toolbar;

2
Messou

Добавление импорта 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

1
trustidkid

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

import androidx.appcompat.widget.Toolbar
0
Fa-C-Shus

import Android.support.v7.widget.Toolbar; импортировать его в свой класс Java

0
Vickie Kangare

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

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

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

Android.support.v7.widget.Toolbar
0
amit pandya

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

Java.lang.IllegalStateException: это действие уже имеет действие бар снабжен оконным декором

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

Правка это 

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

К этому 

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

0
Tahmid Bin Rashid

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

0
Mosayeb Masoumi