- панель инструментов setSupportActionBar не может быть применена к (android.штучка.Панель инструментов) ошибка
- 10 ответов
- Cannot resolve method setSupportActionBar(androidx.appcompat.widget.Toolbar)
- 4 Answers 4
- Панель инструментов setSupportActionBar не может быть применена к ошибке (android.widget.Toolbar)
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Ответ 5
- Ответ 6
- Ответ 7
- Ответ 8
- Ответ 9
- Ответ 10
- Ответ 11
- Ответ 12
- Ответ 13
- Ответ 14
- Вызов setSupportActionBar во фрагменте
- 3 ответа
- Calling setSupportActionBar in a fragment
- 3 Answers 3
панель инструментов setSupportActionBar не может быть применена к (android.штучка.Панель инструментов) ошибка
Я ищу ответ и я пробовал много возможных решений, но ничего не работает..
Я пытаюсь настроить панель действий материала после в этом уроке.
tool_bar.XML-код:
активности.XML-код:
и, наконец, моя деятельность.java:
ошибка:
setSupporActionBar (android.поддержка.В7.штучка.Панель инструментов) в ActionBarActivity не может быть применена к (android.штучка.Панель инструментов)
как я могу это исправить?
10 ответов
в своем Activity.java импорт android.support.v7.widget.Toolbar вместо android.widget.Toolbar :
в панели инструментов вы должны расширить AppCompatActivity, а затем импортировать android.поддержка.В7.штучка.Панель инструментов
для добавления панели инструментов, которая поддерживает Material Design,официальная документация направления вероятно, лучше всего следовать.
сделайте вашу деятельность расширить AppCompatActivity .
объявить NoActionBar в Манифесте.
добавить панель инструментов в xml-код вашей деятельности макет.
вызов setSupportActionBar в деятельности onCreate .
Примечание: вам придется импортировать следующее в действие.
подтвердить, что ваше объявление Манифеста включает в себя android: theme= » @style / AppTheme.NoActionBar» тег, например:
добавление импорта android.поддержка.В7.штучка.Панель инструментов в списке импорт устранить эту проблему.
затем добавьте файл макета виджета панели инструментов:
в методе onCreate кода java
панель инструментов Tootbar = findViewById (R. id.панель инструментов); setSupportActionBar (панель инструментов);
импорт android.поддержка.В7.штучка.Панель инструментов; импортируйте его в свой класс java
я использовал ранее этот код:
и расширенный AppCompatActivity также, но я получал ту же ошибку. Так что вместо использования панели инструментов класс, я импортировал ниже класс, и он работал для меня:
у меня такая же проблема. Мой Logcat говорит
java.ленг.IllegalStateException: это действие уже имеет действие бар поставляется оконным декором
у меня уже есть панель действий, поэтому, когда я использую setSupportActionBar(toolbar); мое приложение получает ошибку для этого конфликта. Чтобы устранить эту проблему, добавьте NoActionBar в файле ресурсов стиля темы приложения.
Источник
Cannot resolve method setSupportActionBar(androidx.appcompat.widget.Toolbar)
I’m using androidx and i’m trying to set a toolbar in my Mainactivity so that I can add menu items.
I have searched everywhere but can’t seem to get a solution tried implementation ‘com.android.support:appcompat-v7:28.0.0’
4 Answers 4
The issue must come from the fact that the Toolbar you are referencing in your MainActivity class is the Toolbar widget from ( android.widget ) as shown in the image below:
Instead of the Toolbar from the ( androidx.appcompact.widget ) as shown in the image below:
So when typing «Toolbar» in the MainActivity class, make sure to slow down and check that the Toolbar you’re referencing is the ( androidx.appcompat.widget ) one.
I met the same problem. I use in Kotlin.
integrate with «com.google.android.material.material:1.1.0-alpha06»
the error: setActionBar(required: android.widget.Toolbar),but I can not find setSupportActionBar in Kotlin
If I change the widget
I couldn’t find much in the documentation regarding this, it worked for me by:
- In your layout and activity instead of using androidx, use appcompat toolbar widget.
- Use setActionBar() instead of setSupportActionBar() in your activity’s onCreate() method
- Set NoActionBar theme in AndroidManifest for your activity to avoid interference with your custom toolbar.
Источник
Панель инструментов setSupportActionBar не может быть применена к ошибке (android.widget.Toolbar)
Я искал ответ и перепробовал множество возможных решений, но, похоже, ничего не работает..
Я пытаюсь настроить панель действий материала после этого урока.
tool_bar.xml:
activity.xml:
И, наконец, моя активность.
Ошибка:
setSupporActionBar (android.support.v7.widget.Toolbar) в ActionBarActivity не может быть применен к (android.widget.Toolbar)
Как я могу это исправить?
ОТВЕТЫ
Ответ 1
В вашем Activity.java импортируйте android.support.v7.widget.Toolbar вместо android.widget.Toolbar :
Ответ 2
При использовании панели инструментов вы должны расширить AppCompatActivity и
Ответ 3
Для добавления панели инструментов, поддерживающей Material Design, лучше всего следовать официальным указаниям по документации.
Заставьте свою деятельность расширять AppCompatActivity .
NoActionBar в Манифесте.
Добавьте панель инструментов в свой макет xml своей деятельности.
Вызовите setSupportActionBar в onCreate .
Примечание. Вам нужно будет импортировать следующее в упражнении.
Ответ 4
Для версии Android выше 3:
Для версии Android ниже 3:
Ответ 5
Подтвердите, что в объявлении манифеста содержится тег android: theme = «@style/AppTheme.NoActionBar» , например:
Ответ 6
Добавление импорта android.support.v7.widget.Toolbar в список импорта решает эту проблему.
Затем добавьте файл макета виджета панели инструментов:
В методе onCreate Java-кода
Панель инструментов Tootbar = findViewById (R.id.toolbar); setSupportActionBar (панель инструментов);
Ответ 7
класс должен быть расширен от AppCompatActivity, чтобы решить проблему с setSuppertActionBar, которая не распознается
Ответ 8
Ответ 9
импортировать его в свой класс Java
Ответ 10
Я использовал ранее этот код:
и расширенный AppCompatActivity также, но я получаю ту же ошибку. Поэтому вместо использования класса Toolbar я импортировал приведенный ниже класс, и он работал для меня:
Ответ 11
У меня та же проблема. Мой Logcat говорит
java.lang.IllegalStateException: у этого действия уже есть панель действий, предоставленная декором окна
У меня уже есть панель действий, поэтому, когда я использую setSupportActionBar(toolbar); мое приложение получает ошибку для этого конфликта. Чтобы решить эту проблему, добавьте NoActionBar в файл ресурсов стиля темы вашего приложения.
Ответ 12
С добавлением androidx в Studio 3. 0+ совместимость панели инструментов теперь в новой библиотеке, доступной вот так
Ответ 13
вставить импорт android.support.v7.widget.Toolbar; если вы получили ошибку с панелью инструментов в mainacctivity
Ответ 14
Название панели инструментов можно легко изменить с помощью
в вашем файле манифеста. Я только что прошел Манифест и нашел
Помогает изменить в зависимости от конкретной деятельности, надеюсь, вы попробуете
Источник
Вызов setSupportActionBar во фрагменте
Как я могу назвать setSupportActionBar во фрагменте на языке котлин. У меня есть mainActivity с навигационным ящиком. Когда я нажимаю на первый элемент навигационного ящика, он должен открыть фрагмент notesFragment. Я хочу установить панель инструментов для notesFragment. Когда я пытался использовать AppCompatActivity().setSupportActionBar(toolbar_top) , приложение вылетает, когда я нажимаю на первый элемент навигационного ящика, с ошибкой
java.lang.NullPointerException: попытка вызвать виртуальный метод ‘android.view.Window $ Callback android.view.Window.getCallback ()’ для ссылки на пустой объект
3 ответа
Поскольку вы используете Kotlin, вы можете попытаться преобразовать действие в AppCompatActivity, а затем получить доступ к панели действий поддержки:
Обратите внимание, что это будет работать, только если ваша деятельность хоста расширяет AppCompatActivity.
В документации AppCompatActivity говорится, что getSupportActionBar() это метод экземпляра. Выполняя AppCompatActivity().setSupportActionBar(toolbar) , вы вызываете конструктор без присвоения ссылки на переменную, а затем ожидаете, что этот экземпляр вызовет метод, аналогично тому, что было бы статическим методом. Это не так. К настоящему моменту вы должны начать понимать, что по тому, как вы делаете что-то, вы не ссылаетесь на активность своего хоста, поэтому попытка установить панель инструментов не будет работать, даже если синтаксис был правильным.
Что касается фрагмента, вы получаете экземпляр активности хостинга через его activity член. activity.supportActionBar нет, потому что он был заключен для вас в activity.actionBar .
Вы можете использовать автозаполнение, чтобы узнать больше о возможных методах, которые можно использовать.
Также в самых последних версиях библиотеки поддержки, где свойство Activity имеет тип NULL, вы можете использовать безопасный вызов:
Источник
Calling setSupportActionBar in a fragment
How can I call setSupportActionBar in a fragment in kotlin language . I have a mainActivity with a navigation drawer. When I click on the first item of the navigation drawer it should opens a notesFragment . I want to set a toolBar for the notesFragment. When I tried to use AppCompatActivity().setSupportActionBar(toolbar_top) the app crashes when I click on the first item of the navigation drawer, with the error
java.lang.NullPointerException: Attempt to invoke virtual method ‘android.view.Window$Callback android.view.Window.getCallback()’ on a null object reference
3 Answers 3
As you’re using Kotlin you can try to smart cast the activity to AppCompatActivity and then you can access the support action bar:
Note that this will only work if your host activity extends AppCompatActivity.
The AppCompatActivity documentation states that getSupportActionBar() is an instance method. By doing AppCompatActivity().setSupportActionBar(toolbar) you are calling the constructor without assigning the reference to a variable and then expecting that instance to call the method, similar to what would be a static method. This is not how it works. By now you should start seeing that by the way you are doing things, you are not referencing your host activity, so attempting to set the toolbar would not work even if the syntax was correct.
As for the fragment, you get the hosting activity instance via its activity member. There is no activity.supportActionBar because it has been encapsulated for you in activity.actionBar .
You can use the autocomplete to find out more about the possible methods that can be used.
Источник