android.view.View$On 未处理的 hKey 事件侦听器
android.view.View$OnUnhandledKeyEventListener
我是 Android Studio 的新手,我不明白为什么我的工具栏没有按照 https://developer.android.com/training/appbar/setting-up 所述显示
我知道在 Whosebug 上已经有一些其他问题,比如我的问题,但它们在我的项目中不起作用。因此,我将非常感谢解决此问题。截图:
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(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)
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>
build.gradle(应用级别)
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'
style.xml:
<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>
如 documentation 所述,首先,您的 Activity
应该从 AppCompatActivity()
.
扩展
其次,在您的项目 styles
中设置了 Base.Theme.AppCompat.Light.DarkActionBar
,这意味着它确实有一个 DarkActionBar
但您的 [=20= 中已经有一个 Toolbar
].所以,简单地,改变:
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
一个 ID。
<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"/>
那你应该可以走了。
在 build.gradle(应用级别) 中进行更改,以降级到版本 27,如下所示。然后同步并构建项目。希望它能解决问题..
compileSdkVersion 27
targetSdkVersion 27
implementation 'com.android.support:appcompat-v7:27.1.1'
库 ~-v7:28.0.0 有问题。有两种解决方案,您可以下载 compile 和 targetSdkVersion 到 27 或将 Android Studio 升级到最新版本(3.2.x 更高)。
这不是错误,而是一个警告,可以通过在我的 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,找不到class,但运行没有致命错误。
我们可以在调试模式下注入 class 来忽略错误信息。
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
and/or androidx.appcompat:appcompat
,请将 androidx.core:core
更新为 1.4.0-alpha01
and/or androidx.appcompat:appcompat
至 1.3.0-alpha01
降级到 sdk 27 作为另一个 post 建议给我带来了一系列新问题。
参见:
在我的 build.gradle(应用程序级别)中添加条目解决了我的问题。
dependencies {
...
implementation 'androidx.core:core:1.5.0-alpha05'
...
}
这是我想试试这个的地方:
https://github.com/android/sunflower/issues/295#issuecomment-649630057
我是 Android Studio 的新手,我不明白为什么我的工具栏没有按照 https://developer.android.com/training/appbar/setting-up 所述显示 我知道在 Whosebug 上已经有一些其他问题,比如我的问题,但它们在我的项目中不起作用。因此,我将非常感谢解决此问题。截图:
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(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)
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>
build.gradle(应用级别)
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'
style.xml:
<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>
如 documentation 所述,首先,您的 Activity
应该从 AppCompatActivity()
.
其次,在您的项目 styles
中设置了 Base.Theme.AppCompat.Light.DarkActionBar
,这意味着它确实有一个 DarkActionBar
但您的 [=20= 中已经有一个 Toolbar
].所以,简单地,改变:
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
一个 ID。
<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"/>
那你应该可以走了。
在 build.gradle(应用级别) 中进行更改,以降级到版本 27,如下所示。然后同步并构建项目。希望它能解决问题..
compileSdkVersion 27
targetSdkVersion 27
implementation 'com.android.support:appcompat-v7:27.1.1'
库 ~-v7:28.0.0 有问题。有两种解决方案,您可以下载 compile 和 targetSdkVersion 到 27 或将 Android Studio 升级到最新版本(3.2.x 更高)。
这不是错误,而是一个警告,可以通过在我的 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,找不到class,但运行没有致命错误。
我们可以在调试模式下注入 class 来忽略错误信息。
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
and/or androidx.appcompat:appcompat
,请将 androidx.core:core
更新为 1.4.0-alpha01
and/or androidx.appcompat:appcompat
至 1.3.0-alpha01
降级到 sdk 27 作为另一个 post 建议给我带来了一系列新问题。
参见:
在我的 build.gradle(应用程序级别)中添加条目解决了我的问题。
dependencies {
...
implementation 'androidx.core:core:1.5.0-alpha05'
...
}
这是我想试试这个的地方: https://github.com/android/sunflower/issues/295#issuecomment-649630057