gpt4 book ai didi

java - 抽屉导航 - 无法实例化抽屉布局

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:57 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中实现抽屉导航,但遇到了严重的问题。现在我的问题是我想将我的 MainContent 放在这样的抽屉布局中:

<android.support.v4.widget.DrawerLayout
android:id = "@+id/drawer_layout"
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
>

<FrameLayout
[...]
</FrameLayout>
</android.support.v4.widget.DrawerLayout>

但是我得到这个错误代码

The following classes could not be instantiated: - android.support.v4.widget.DrawerLayout (Open Class, Show Exception)

这些是异常的详细信息:

java.lang.ClassNotFoundException: android.support.v4.widget.DrawerLayoutImpl
at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:148)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
at com.intellij.util.lang.UrlClassLoader._defineClass(UrlClassLoader.java:195)
at com.intellij.util.lang.UrlClassLoader.defineClass(UrlClassLoader.java:191)
at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:152)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.android.tools.idea.rendering.RenderClassLoader.loadClassFromJar(RenderClassLoader.java:78)
at org.jetbrains.android.uipreview.ProjectClassLoader.loadClassFromModuleOrDependency(ProjectClassLoader.java:108)
at org.jetbrains.android.uipreview.ProjectClassLoader.load(ProjectClassLoader.java:89)
at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:56)
at org.jetbrains.android.uipreview.ProjectClassLoader.findClass(ProjectClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:173)
at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:96)
at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:172)
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132)
at android.view.LayoutInflater.inflate(LayoutInflater.java:482)
at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:401)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:329)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:575)
at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:564)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932)
at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:564)
at com.android.tools.idea.rendering.RenderService.render(RenderService.java:691)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:604)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1900(AndroidLayoutPreviewToolWindowManager.java:80)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:546)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171)
at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:541)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:327)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
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)

我遵循本指南 http://developer.android.com/training/implementing-navigation/nav-drawer.html但直到现在它根本不起作用。也许有人有关于如何使用 Android 5.0 正确实现抽屉导航的更好教程??

在此先感谢您的帮助。

真诚的约翰

最佳答案

遇到同样的问题,首先关注一下Christer Nordvik的评论:

Think it is a bug in the latest tools version: https://code.google.com/p/android/issues/detail?id=78090

We have the same in the designer, but when running it is fine. Worked without issues before the API level 21 release of the SDK.

在我看来,您有 4 个选择:


选项 1:返回到 Android 5.0 之前的版本在 SDK 20 中使用和编译您的代码

将 build.gradle 更改为以下内容:

apply plugin: 'com.android.application'

android {
compileSdkVersion 20
buildToolsVersion "20.0.0"

defaultConfig {
applicationId "com.example.yourapp"
minSdkVersion 8
targetSdkVersion 20
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:20.0.0'
}

将以下行更改为与您的项目相对应的内容:

        applicationId "com.example.yourapp"
minSdkVersion 8

很可能您还需要更改“res\v21\styles.xml”:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="android:Theme.Material.Light">
</style>
</resources>

到:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="android:Theme.Holo.Light">
</style>
</resources>

由于 Material 主题是在 Lollipop/Android 5.0 上引入的

将您的项目与新的 gradle 文件同步,等待同步完成,一切顺利,您现在应该可以看到布局预览

Sync your project with Gradle Files


选项 2:更新您的文本代码

代码将编译并正常工作,只需更新您的文本代码,没有预览。而是进行更改并在模拟器或实际 Android 设备上进行尝试。


选项 3:结合前 2 个选项

使用选项 1,对布局做任何你需要做的事情(只要它不需要 SDK 21 中的任何特定内容),完成后恢复对 build.gradle 和 styles.xml 所做的更改,这样你就可以享受Lollipop 的新视觉糖果,只需按照选项 2 的建议在模拟器或设备上对其进行测试


选项 4:WAITING他们修复错误

仅此而已。


远射额外选项:

如果您已经安装了 Android Studio 的稳定版本,请尝试 Beta 或 Canary,谁知道呢,可能有一个补丁可以解决其中一个问题(我有一个稳定的版本,所以我不知道知道)。或者在 Eclipse 上试试

关于java - 抽屉导航 - 无法实例化抽屉布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26530975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com