Панель инструментов 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)
Как я могу это исправить?
Ответы
Ответ 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, лучше всего следовать официальным указаниям по документации.
- Добавьте библиотеку поддержки app7 для v7.
-
Заставьте свою деятельность расширять AppCompatActivity
.
public class MyActivity extends AppCompatActivity {
// ...
}
-
NoActionBar
в Манифесте.
<application
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
/>
-
Добавьте панель инструментов в свой макет xml своей деятельности.
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
...
/>
-
Вызовите 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 программы