панель инструментов 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,официальная документация направления вероятно, лучше всего следовать.
- добавить библиотека поддержки V7 appcompat.
-
сделайте вашу деятельность расширить
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;
подтвердить, что ваше объявление Манифеста включает в себя 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
я использовал ранее этот код:
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