Я новичок в Android Studio, и я не понимаю, почему моя панель инструментов не отображается, как описано https://developer.android.com/training/appbar/setting-up Я знаю, что уже есть некоторые другие вопросы, подобные моему, по stackoverflow, но они не работают в моем проекте. Поэтому я был бы очень благодарен за исправление этой проблемы. Скриншот:
java.lang.ClassNotFoundException: android.view.View$OnUnhandledKeyEventListener
at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:180)
at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:61)
at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:118)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.jetbrains.android.uipreview.ModuleClassLoader.loadClass(ModuleClassLoader.java:213)
at android.support.v7.widget.ViewUtils.isLayoutRtl(ViewUtils.java:58)
at android.support.v7.widget.Toolbar.onMeasure_Original(Toolbar.java:1578)
at android.support.v7.widget.Toolbar.onMeasure(Toolbar.java)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure_Original(View.java:22071)
at android.view.View_Delegate.measure(View_Delegate.java:80)
at android.view.View.measure(View.java:22035)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.measureView(RenderSessionImpl.java:590)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:343)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:384)
at com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:193)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:544)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$3(RenderTask.java:678)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
<?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 = "match_parent"
android:background = "@color/colorPrimaryDark">
</android.support.v7.widget.Toolbar>
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.david.gamebase"
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
implementation 'com.google.firebase:firebase-auth:11.6.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
apply plugin: 'com.google.gms.google-services'
<resources>
<!-- Base application theme. -->
<style name = "AppTheme" parent = "Base.Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name = "colorPrimary">@color/colorPrimary</item>
<item name = "colorPrimaryDark">@color/colorPrimaryDark</item>
<item name = "colorAccent">@color/colorAccent</item>
</style>
</resources>
## toolbar.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 = "match_parent"
android:background = "@color/colorPrimaryDark">
</android.support.v7.widget.Toolbar>
Сам макет работает некорректно. Когда я открываю файл xml в папке res, он не отображается в предварительном просмотре
Возможный дубликат android / view / view $ onUnhandledKeyEventListener (ошибка onMeasure)
Как упоминалось в документация, во-первых, ваш Activity должен быть расширен от AppCompatActivity().
Во-вторых, в вашем проекте styles установлен Base.Theme.AppCompat.Light.DarkActionBar, что означает, что у него есть DarkActionBar, но у вас уже есть Toolbar в вашем layout. Итак, просто измените:
Base.Theme.AppCompat.Light.DarkActionBar
к:
Theme.AppCompat.Light.NoActionBar
Затем, (на стороне java-kotlin), настройте Toolbar:
// Note that the Toolbar defined in the layout has the id "my_toolbar"
setSupportActionBar(findViewById(R.id.my_toolbar))
И дайте Toolbar идентификатор.
<android.support.v7.widget.Toolbar
android:id = "@+id/my_toolbar"
android:layout_width = "match_parent"
android:layout_height = "?attr/actionBarSize"
android:background = "?attr/colorPrimary"
android:theme = "@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme = "@style/ThemeOverlay.AppCompat.Light"/>
Тогда тебе должно быть хорошо.
примечание об изменении DarkActionBar на NoActionBar заставило меня работать с предварительным просмотром пользовательского интерфейса с таргетингом на API 28 и с использованием пакетов androidx. Насколько мне известно, в игре не было панели инструментов (новый проект, созданный AS 3.0.1), но исключением было довольно странное исключение java.lang.ClassNotFoundException: android.view.View $ OnUnhandledKeyEventListener, упомянутое OP
Замена Theme.AppCompat.Light.DarkActionBar устранила ошибку для моего activity_main, но сломала мой settings_activity
Внесите изменения в свой build.gradle (уровень приложения), чтобы перейти на версию 27, как показано ниже. Затем синхронизируйте и соберите проект. Надеюсь, это решит проблему.
compileSdkVersion 27
targetSdkVersion 27
implementation 'com.android.support:appcompat-v7:27.1.1'
В то время это было лучшее решение, но теперь есть лучшее: перейти на Android Studio 3.2.
@TatiOverflow, если это не решения, вы должны указать правильные решения
это опасное использование? targetdk 28 и appcompat 27. Является ли это конфликтом для приложения?
@mhsmith Это все еще происходит со мной с Android Studio 3.4.1
@ Akaisteph7 Мне жаль это слышать, но, к сожалению, у меня нет других идей.
Понижение версии больше не является решением. Я использую Android Studio 3.6.3, но проблема не устранена.
У меня такая же проблема, и она была исправлена вашим решением. Однако я использую библиотеки AndroidX, и после установки compileSdkVersion на 27 возникла ошибка "> Task: app: processDebugResources FAILED AGPBI: {" kind ":" error "," text ":" Ошибка связывания ресурсов Android ". .. "если я не установил compileSdkVersion на 28 или выше. Кстати, я новичок в Android Studio!
Проблема с библиотекой ~ -v7: 28.0.0. Есть два решения: вы можете либо загрузить compile и targetSdkVersion до 27, либо обновить Android Studio до последней версии (3.2.x выше).
Нет. У меня Android Studio 3.2.1, но я все еще вижу эту ошибку.
Это не ошибка, а предупреждение, это можно игнорировать, добавив следующий код в мой build.gradle (уровень приложения), файл работает в моем случае. Затем синхронизируйте и соберите проект. Надеюсь, это решит проблему.
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == "com.android.support") {
if (!requested.name.startsWith("multidex")) {
details.useVersion "26.+"
}
}
}
}
Вы можете легко это исправить,
implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
и откройте style.xml под значениями и измените на
style name = "AppTheme" parent = "Base.Theme.AppCompat.Light.DarkActionBar">
Добавьте в свои зависимости библиотеку поддержки multidex
com.android.support:multidex:1.0.3
android.view.View $ OnUnhandledKeyEventListener добавлен в api28.
Если устройство времени выполнения ниже 28, не удается найти класс, но запускается без фатальной ошибки.
Мы можем внедрить класс в режиме отладки, чтобы игнорировать сообщение об ошибке.
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
//inject class when api<28 && debug==true
debugImplementation 'com.github.DonaldDu:FixUnhandledEvent:1.0'
При ответе на столь популярный вопрос будет более чем приветствоваться небольшое объяснение.
При использовании Android X и androidx.core:core и / или androidx.appcompat:appcompat обновите androidx.core:core до 1.4.0-alpha01 и / или androidx.appcompat:appcompat до 1.3.0-alpha01.
Это сработало для меня. В моем случае я использовал MaterialToolbar, который, казалось, был причиной проблемы. Я использую только androidx.appcompat: appcompat, и я обновился с 1.1.0 до 1.3.0-alpha01, как уже упоминалось. Проблема была решена после синхронизации проекта.
У меня сработало обновление до com.google.android.material: material: 1.4.0. У меня была версия 1.3.0, и эта версия вызывала ошибки. В этом обновлении материала они обновили androix.core с 1.2.0 до 1.5.0.
Переход на SDK 27, как было предложено в одном из постов, вызвал для меня новый набор проблем. см .: Android - сбой при связывании ресурсов / не удалось выполнить привязку ссылок
Добавление записи в мой build.gradle (уровень приложения) решило проблему для меня.
dependencies {
...
implementation 'androidx.core:core:1.5.0-alpha05'
...
}
Вот откуда у меня возникла идея попробовать это: https://github.com/android/sunflower/issues/295#issuecomment-649630057
Добавление предложенной зависимости Gradle исправило это для меня. Последнюю версию AndroidX Core можно найти здесь: developer.android.com/jetpack/androidx/releases/core
вы можете вставить источник активности, в котором вы используете этот макет, содержащий панель инструментов?