Saturday, September 15, 2018

Android studio 3.X does not render xml file due to java class missing

java.lang.ClassNotFoundException: android.view.View$OnUnhandledKeyEventListener
In my very first project is obviously Hello world and I just open android studio and click on the empty activity and then w8 for the build to finish but it doesn't render the app as I expected. I reinstalled android studios and JDK10. but it doesn't work. the project shows fine in virtual device and I can even edit hello world to any string, but in XML view, it just shows a white screen and its showing every time. Below is the stack trace:
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.ActionBarContainer.(ActionBarContainer.java:62) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:481) 
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:264) 
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:222) 
at com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:209) 
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:337) 
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:348) 
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:248) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:863) 
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:837) 
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
at com.android.layoutlib.bridge.bars.BridgeActionBar.(BridgeActionBar.java:89) 
at com.android.layoutlib.bridge.bars.AppCompatActionBar.(AppCompatActionBar.java:68) 
at com.android.layoutlib.bridge.impl.Layout.createActionBar(Layout.java:277) 
at com.android.layoutlib.bridge.impl.Layout.(Layout.java:161) 
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:288) 
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)
First of all we are developing an app, so we don't need to face these types of issues because it has no valid reason to get such errors. So I suggest you use always stable version of every dependency, and this is because of unstable version using.
The issue you faced was due to using alpha version of AppCompact library. Use stable version to get rid of this issue now and in future.
FIRST Currently 27.1.1 is latest version of AppComactV7. You can see Maven Repo link to find out latest.
final def SUPPORT_VERSION = "27.1.1"
implementation "com.android.support:appcompat-v7:$SUPPORT_VERSION"
implementation "com.android.support:design:$SUPPORT_VERSION" // use only if already using
I use definitions to have same version for all support versions. Also ignore design library if you are not already using it.
SECOND You also need to downgrade your compileSdkVersion & targetSdkVersion to remove some gradle warnings.
compileSdkVersion 27
targetSdkVersion 27
Below is full example of build.gradle (Module:app)
apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.hp.myapplication"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
final def SUPPORT_VERSION = "27.1.1"
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "com.android.support:appcompat-v7:$SUPPORT_VERSION"
    implementation "com.android.support:design:$SUPPORT_VERSION"

    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    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'
    implementation 'com.android.support:gridlayout-v7:27.1.1'
}

No comments:

Post a Comment