web-dev-qa-db-ja.com

android.view.View $ OnUnhandledKeyEventListener

私はAndroid St​​udioを初めて使用し、 https://developer.Android.com/training/appbarで説明されているようにツールバーが表示されない理由がわかりません/ setting-up stackoverflowでの私のような質問が既にいくつかあることは知っていますが、それらは私のプロジェクトでは動作しません。したがって、私はこの問題を解決するために非常に感謝しています。スクリーンショット:

Screenshot

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)

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>
33
David Schmidt

build.gradle(アプリレベル)で変更を行い、以下のようにバージョン27にダウングレードします。次に、プロジェクトを同期してビルドします。問題が解決することを願っています。

compileSdkVersion 27

targetSdkVersion 27

implementation 'com.Android.support:appcompat-v7:27.1.1'
10
ArindamC

documentation で述べたように、まず、ActivityAppCompatActivity()から拡張する必要があります。

次に、プロジェクトでstylesBase.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に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"/>

その後、あなたは行ってもいいはずです。

5
ʍѳђઽ૯ท

これはエラーではありませんが、mybuild.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.+"
        }
    }
  }
}

要点への参照

1
Pratap Sharma

https://github.com/DonaldDu/FixUnhandledEvent

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'
0
Donald Du

依存関係にmultidexサポートライブラリを追加します

com.Android.support:multidex:1.0.3
0
Daniel

ライブラリ〜-v7:28.0.0に問題があります。 2つのソリューションがあり、compileとtargetSdkVersionを27にダウンロードするか、Android St​​udioを最新バージョン(3.2.x以上)にアップグレードできます。

0
Junior Frogie