При использовании com.google.android.material.bottomnavigation.BottomNavigationView в макете приложения я получаю следующую ошибку:
Caused by: android.view.InflateException: Binary XML file line #25 in com.example:layout/activity_main: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).
Обратите внимание, что это происходит ТОЛЬКО на устройствах Android 11, работающих в темном режиме. При использовании облегченного режима в Android 11 все работает нормально.
Это базовая тема приложения:
@color/surface
И это используется в теме/ночи:
Даже если я изменю его на Theme.AppCompat, Theme.MaterialComponents и т. д., приложение все равно вылетит.
Почему это так? Хотя светлая и темная темы будут идентичными, приложение все равно будет аварийно завершать работу в темном режиме. И этого не происходит в новых версиях Android. Пока такие проблемы возникают только в Android 11 в темном режиме.
Вот используемые версии Gradle:
implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
Ответы отсюда:
Стиль этого компонента требует, чтобы тема вашего приложения была Theme.MaterialComponents (или ее потомок)
не сработало.
AndroidManifest.xml:
Макет действий:
Активность при создании:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
// Restore the state of the currently opened fragment
if (savedInstanceState != null) {
currentFragment = getSupportFragmentManager().getFragment(savedInstanceState, "currentFragment");
}
// Navigation bar init
NavigationBarView bottomNav = findViewById(R.id.bottom_nav_menu);
// If the current fragment is null, set the default fragment to be loaded
if (currentFragment == null) {
switch (preferences.s_launchwindow) {
case SETTINGS:
currentFragment = SettingsFragment.newInstance();
bottomNav.setSelectedItemId(R.id.nav_settings);
break;
case FEED:
currentFragment = FeedFragment.newInstance();
bottomNav.setSelectedItemId(R.id.nav_feed);
break;
case SOURCES:
currentFragment = SourceFragment.newInstance(preferences);
bottomNav.setSelectedItemId(R.id.nav_content);
break;
case DISCOVER:
currentFragment = DiscoverFragment.newInstance(preferences);
bottomNav.setSelectedItemId(R.id.nav_discover);
break;
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame_container, currentFragment)
.commit();
}
bottomNav.setOnItemSelectedListener(item -> {
int itemId = item.getItemId();
if (itemId == bottomNav.getSelectedItemId()) {
// The selected item is already active, do nothing
return true;
}
preferences = PreferencesManager.loadPreferences(MainActivity.this);
if (itemId == R.id.nav_settings) {
currentFragment = SettingsFragment.newInstance();
} else if (itemId == R.id.nav_feed) {
currentFragment = FeedFragment.newInstance();
} else if (itemId == R.id.nav_content) {
currentFragment = SourceFragment.newInstance(preferences);
} else if (itemId == R.id.nav_discover) {
currentFragment = DiscoverFragment.newInstance(preferences);
}
return loadFragment(currentFragment);
});
bottomNav.findViewById(R.id.nav_feed).setOnLongClickListener(v -> {
if (currentFragment instanceof FeedFragment) {
FeedFragment feedFragment = (FeedFragment) currentFragment;
feedFragment.scrollToTop();
return true; // Event has been consumed
}
return false; // Event has not been consumed
});
Подробнее здесь: https://stackoverflow.com/questions/781 ... heme-to-be
(BottomNavigationView) Стиль этого компонента требует, чтобы тема вашего приложения была Theme.AppCompat (или ее потомок ⇐ Android
Форум для тех, кто программирует под Android
1716129315
Anonymous
При использовании com.google.android.material.bottomnavigation.BottomNavigationView в макете приложения я получаю следующую ошибку:
Caused by: android.view.InflateException: Binary XML file line #25 in com.example:layout/activity_main: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView
Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).
Обратите внимание, что это происходит ТОЛЬКО на устройствах Android 11, работающих в темном режиме. При использовании облегченного режима в Android 11 все работает нормально.
Это базовая тема приложения:
@color/surface
И это используется в теме/ночи:
Даже если я изменю его на Theme.AppCompat, Theme.MaterialComponents и т. д., приложение все равно вылетит.
Почему это так? Хотя светлая и темная темы будут идентичными, приложение все равно будет аварийно завершать работу в темном режиме. И этого не происходит в новых версиях Android. Пока такие проблемы возникают только в Android 11 в темном режиме.
Вот используемые версии Gradle:
implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
Ответы отсюда:
Стиль этого компонента требует, чтобы тема вашего приложения была Theme.MaterialComponents (или ее потомок)
не сработало.
AndroidManifest.xml:
Макет действий:
Активность при создании:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
// Restore the state of the currently opened fragment
if (savedInstanceState != null) {
currentFragment = getSupportFragmentManager().getFragment(savedInstanceState, "currentFragment");
}
// Navigation bar init
NavigationBarView bottomNav = findViewById(R.id.bottom_nav_menu);
// If the current fragment is null, set the default fragment to be loaded
if (currentFragment == null) {
switch (preferences.s_launchwindow) {
case SETTINGS:
currentFragment = SettingsFragment.newInstance();
bottomNav.setSelectedItemId(R.id.nav_settings);
break;
case FEED:
currentFragment = FeedFragment.newInstance();
bottomNav.setSelectedItemId(R.id.nav_feed);
break;
case SOURCES:
currentFragment = SourceFragment.newInstance(preferences);
bottomNav.setSelectedItemId(R.id.nav_content);
break;
case DISCOVER:
currentFragment = DiscoverFragment.newInstance(preferences);
bottomNav.setSelectedItemId(R.id.nav_discover);
break;
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.frame_container, currentFragment)
.commit();
}
bottomNav.setOnItemSelectedListener(item -> {
int itemId = item.getItemId();
if (itemId == bottomNav.getSelectedItemId()) {
// The selected item is already active, do nothing
return true;
}
preferences = PreferencesManager.loadPreferences(MainActivity.this);
if (itemId == R.id.nav_settings) {
currentFragment = SettingsFragment.newInstance();
} else if (itemId == R.id.nav_feed) {
currentFragment = FeedFragment.newInstance();
} else if (itemId == R.id.nav_content) {
currentFragment = SourceFragment.newInstance(preferences);
} else if (itemId == R.id.nav_discover) {
currentFragment = DiscoverFragment.newInstance(preferences);
}
return loadFragment(currentFragment);
});
bottomNav.findViewById(R.id.nav_feed).setOnLongClickListener(v -> {
if (currentFragment instanceof FeedFragment) {
FeedFragment feedFragment = (FeedFragment) currentFragment;
feedFragment.scrollToTop();
return true; // Event has been consumed
}
return false; // Event has not been consumed
});
Подробнее здесь: [url]https://stackoverflow.com/questions/78155559/bottomnavigationview-the-style-on-this-component-requires-your-app-theme-to-be[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия