【问题标题】:Update messed up Android Studio environment更新混乱的 Android Studio 环境
【发布时间】:2016-06-24 10:37:54
【问题描述】:

通过 SDK 管理器更新 Android Studio 和所有相关内容后,由于所有这些渲染问题,我无法再创建包含单个空白 Activity 的最简单的应用程序。不过,选择一个 Empty Activity 似乎仍然可以管理。

回到我的空白活动问题,这是对我的环境的总结:

Android Studio 1.5.1
Android SDK Tools 24.4.1
Android SDK Platform Tools 23.1
Android SDK Build Tools 23.0.2
Android Support Library 23.2

我在 activity_main.xml 和 content_main.xml 上都看到了大量的渲染问题错误消息。我将主题更改为 Holo Light,我将 IDE 中的 API 级别降级为 19,但无济于事。我的 activity_main.xml 和 content_main.xml 都显示为灰色 CoordinatorLayout。所以我不能将任何组件拖到 IDE 中的布局上。我错过了什么?!

2016 年 3 月 10 日编辑:添加有关设置和错误消息的详细信息...

这是我应用的 build.gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.udemycourse.notes"
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.0'
    compile 'com.android.support:design:23.2.0'
}
Missing styles. Is the correct theme chosen for this layout?
Note: One or more layouts are missing the layout_width or layout_height attributes. These are required in most layouts.
The following classes could not be instantiated:
android.support.design.widget.AppBarLayout
android.support.design.widget.CoordinatorLayout
android.support.design.widget.FloatingActionButton

渲染窗口中显示的异常: java.lang.IllegalArgumentException:您需要将 Theme.AppCompat 主题(或后代)与设计库一起使用。在 android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:34) 在 android.support.design.widget.AppBarLayout.(AppBarLayout.java:145) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知 来源)在 java.lang.reflect.Constructor.newInstance(未知来源) 在 org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:458) 在 org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:170) 在 org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:103) 在 com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:168) 在 android.view.BridgeInflater.loadCustomView(BridgeInflater.java:247) 在 android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:171) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 在 android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:835) 在 android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:811) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:394) 在 com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:223) 在 com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:426) 在 com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350) 在 com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510) 在 com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498) 在 com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:888) 在 com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498) 在 com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72) 在 com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610) 在 com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607) 在 com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:362) 在 com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607) 在 com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629) 在 com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480) 在 com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) 在 com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) 在 com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) 在 com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) 在 com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) 在 com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) 在 com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) 在 com.intellij.util.Alarm$Request$1.run(Alarm.java:351) 在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源) 在 java.util.concurrent.FutureTask.run(Unknown Source) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(未知来源)

【问题讨论】:

  • 你正面临一个通用问题,可以通过使用来自 AppCompact 的主题来避免。这将是这个 Theme.AppCompat,要么使用它,要么使用它的一些子类主题。这应该有效。
  • @PankajNimgade 当我更改为 AppCompat 时,仍然无法实例化一个类:android.support.design.widget.FloatingActionButton。这是activity_main.xml。在 content_main.xml` 中。有一个异常堆栈也提到了FloatingActionButton,但是设计视图没有明确提到该类不能被实例化。我什至尝试了 Invalidate Cache / Restart 选项,因为许多其他问答都将其作为可能的解决方案......但无济于事。 :-(
  • 当您查看布局时,是否会弹出清除缓存的内容?
  • @WebUser,我想我确实找到了这个问题,由于某种原因,你可能是因为主题风格的变化尝试恢复由 android studio 生成的默认主题,它应该可以工作.

标签: android android-studio


【解决方案1】:

在使用 App CompactToolbar 时应注意的事项是您正在使用 Theme.AppCompat 的后继者主题,例如主题 AppTheme。当您收到当前错误时。

<style name="AppTheme" parent="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>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style> 

在您的AndroidManifest.xml 文件中,确保您的应用程序元素具有此属性android:theme="@style/AppTheme"。您可能希望从各个活动中删除主题属性。

例如

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

如果您仍然面临项目的一些配置问题,请检查此repository,这是一个虚拟代码,但您可以将您的项目与它进行比较。如果您仍然遇到问题,请告诉我。

您可能想用这些替换 build.gradle 依赖项

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:support-v4:23.1.1'

File => Project Structure => 

现在单击给定模块中的app,然后单击依赖项。

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    相关资源
    最近更新 更多