无法访问 DialogStyle
cannot access DialogStyle
将 android-support
库更新为 22.2.0
项目后停止编译。
error: cannot access DialogStyle
class file for android.support.v4.app.DialogFragment$DialogStyle not found
Consult the following stack trace for details.
com.sun.tools.javac.code.Symbol$CompletionFailure: class file for android.support.v4.app.DialogFragment$DialogStyle not found
找不到解决此问题的方法。
以前使用的版本是 22.1.1
如果您使用 android.support.v4.app.DialogFragment,就会发生这种情况。
尝试改用 android.app.DialogFragment。
以防万一不要跳过答案:这里也有关于这个问题的讨论https://github.com/excilys/androidannotations/issues/1435
顺便说一句,您是否在存在此问题的项目中使用 Android 注释?
这里有一些对我们有用的解决方法:
解决方法 1(有些人看到了 NPE,有些人没有)
我刚刚找到了一个临时解决方法...直到 appcompat 解决了这个问题:
- 在您的项目中创建以下包src/main/java
android.support.v4.app
- 创建以下新文件:
DialogFragment$DialogStyle.java
内容
包 android.support.v4.app;
// 在 appcompat 中修复后删除此文件 (https://code.google.com/p/android/issues/detail?id=175086)
public @interface DialogFragment$DialogStyle {
}
解决方法 2(有点难看,但不太可能出现构建问题)
我找到了另一个变通办法……有点难看……但我们已经解决了这个问题(包括上述变通办法中的 NPE),直到 appcompat 22.2 得到修复。
- 在您的项目中创建以下包src/main/java
android.support.v4.app
- 复制 Google v4 FragmentDialog.java 代码
重命名 class(类似于 TempFragmentDialog)。如果您不重命名 class.
,您将收到 "Duplicate" class 错误
项目中任何具有 @Inject 的 FragmentDialog 都需要扩展 FragmentDialog 的副本(例如:public class MyFragmentDialog extends TempFragmentDialog)
试试这个,它解决了我的问题:
compile ('com.android.support:appcompat-v7:22.2.0') {
exclude module: 'support-v4' }
compile ('com.android.support:recyclerview-v7:22.2.0') {
exclude module: 'support-v4' }
compile ('com.android.support:cardview-v7:22.2.0') {
exclude module: 'support-v4' }
compile ('com.android.support:design:22.2.0') {
exclude module: 'support-v4' }
// and exclude support-v4 from other dependencies as well that might include it
// finally add it, but avoid version 22.2.0...
compile ('com.android.support:support-v4:22.1.1')
无需手动将 support-v4 库添加到您的 libs 目录,最后一次导入可确保您的项目中包含正确的版本。
顺便说一句,所有这些解决方法都不是你的错,怪别人:)
我正在使用此处找到的解决方法 https://code.google.com/p/android/issues/detail?id=175086#c9
我修改了 build.gradle 文件,在依赖项部分添加了以下内容:
compile fileTree(include: ['*.jar'], dir: 'libs')
compile ('com.android.support:appcompat-v7:22.2.0') {
exclude module: 'support-v4'
}
compile ('com.android.support:gridlayout-v7:22.2.0') {
exclude module: 'support-v4'
}
compile ('com.android.support:cardview-v7:22.2.0') {
exclude module: 'support-v4'
}
compile ('com.android.support:design:22.2.0') {
exclude module: 'support-v4'
}
您还必须将它从任何其他使用支持库(如 dagger 或 facebook)的依赖项中排除。
然后,我将 $ANDROID_HOME/extras/android/support/v4
中的 android-support-v4.jar 文件添加到我的 libs 目录中,因为该文件似乎有 DialogFragment$DialogStyle。
现在,我的构建又完全正常了,但我仍然希望这个问题能尽快得到修复。
@takoli 的回答在大多数情况下都有效,但如果您有其他依赖项默默地包含 support-v4,或者如果您懒得在任何地方显式排除 support-v4,这里是另一种解决方案。
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:mediarouter-v7:22.2.0'
// Force stable version of support-v4
compile ('com.android.support:support-v4:22.1.1') {
force = true
}
更新:
AndroidAnnotations 发布了解决此问题的新版本 3.3.2。如果您正在使用 AndroidAnnotations 更新到 3.3.2 并使用 22.2.0 支持库而不强制使用旧版本的 support-v4。有关详细信息,请参阅 this thread
简而言之,这是支持库版本 22.2.0 中的一个错误
刚刚升级到下一个更新 22.2.1,效果很好。
将 android-support
库更新为 22.2.0
项目后停止编译。
error: cannot access DialogStyle
class file for android.support.v4.app.DialogFragment$DialogStyle not found
Consult the following stack trace for details.
com.sun.tools.javac.code.Symbol$CompletionFailure: class file for android.support.v4.app.DialogFragment$DialogStyle not found
找不到解决此问题的方法。
以前使用的版本是 22.1.1
如果您使用 android.support.v4.app.DialogFragment,就会发生这种情况。 尝试改用 android.app.DialogFragment。
以防万一不要跳过答案:这里也有关于这个问题的讨论https://github.com/excilys/androidannotations/issues/1435
顺便说一句,您是否在存在此问题的项目中使用 Android 注释?
这里有一些对我们有用的解决方法:
解决方法 1(有些人看到了 NPE,有些人没有)
我刚刚找到了一个临时解决方法...直到 appcompat 解决了这个问题:
- 在您的项目中创建以下包src/main/java
android.support.v4.app
- 创建以下新文件:
DialogFragment$DialogStyle.java
内容
包 android.support.v4.app;
// 在 appcompat 中修复后删除此文件 (https://code.google.com/p/android/issues/detail?id=175086)
public @interface DialogFragment$DialogStyle { }
解决方法 2(有点难看,但不太可能出现构建问题)
我找到了另一个变通办法……有点难看……但我们已经解决了这个问题(包括上述变通办法中的 NPE),直到 appcompat 22.2 得到修复。
- 在您的项目中创建以下包src/main/java
android.support.v4.app
- 复制 Google v4 FragmentDialog.java 代码
重命名 class(类似于 TempFragmentDialog)。如果您不重命名 class.
,您将收到 "Duplicate" class 错误
项目中任何具有 @Inject 的 FragmentDialog 都需要扩展 FragmentDialog 的副本(例如:public class MyFragmentDialog extends TempFragmentDialog)
试试这个,它解决了我的问题:
compile ('com.android.support:appcompat-v7:22.2.0') {
exclude module: 'support-v4' }
compile ('com.android.support:recyclerview-v7:22.2.0') {
exclude module: 'support-v4' }
compile ('com.android.support:cardview-v7:22.2.0') {
exclude module: 'support-v4' }
compile ('com.android.support:design:22.2.0') {
exclude module: 'support-v4' }
// and exclude support-v4 from other dependencies as well that might include it
// finally add it, but avoid version 22.2.0...
compile ('com.android.support:support-v4:22.1.1')
无需手动将 support-v4 库添加到您的 libs 目录,最后一次导入可确保您的项目中包含正确的版本。
顺便说一句,所有这些解决方法都不是你的错,怪别人:)
我正在使用此处找到的解决方法 https://code.google.com/p/android/issues/detail?id=175086#c9
我修改了 build.gradle 文件,在依赖项部分添加了以下内容:
compile fileTree(include: ['*.jar'], dir: 'libs')
compile ('com.android.support:appcompat-v7:22.2.0') {
exclude module: 'support-v4'
}
compile ('com.android.support:gridlayout-v7:22.2.0') {
exclude module: 'support-v4'
}
compile ('com.android.support:cardview-v7:22.2.0') {
exclude module: 'support-v4'
}
compile ('com.android.support:design:22.2.0') {
exclude module: 'support-v4'
}
您还必须将它从任何其他使用支持库(如 dagger 或 facebook)的依赖项中排除。
然后,我将 $ANDROID_HOME/extras/android/support/v4
中的 android-support-v4.jar 文件添加到我的 libs 目录中,因为该文件似乎有 DialogFragment$DialogStyle。
现在,我的构建又完全正常了,但我仍然希望这个问题能尽快得到修复。
@takoli 的回答在大多数情况下都有效,但如果您有其他依赖项默默地包含 support-v4,或者如果您懒得在任何地方显式排除 support-v4,这里是另一种解决方案。
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:mediarouter-v7:22.2.0'
// Force stable version of support-v4
compile ('com.android.support:support-v4:22.1.1') {
force = true
}
更新:
AndroidAnnotations 发布了解决此问题的新版本 3.3.2。如果您正在使用 AndroidAnnotations 更新到 3.3.2 并使用 22.2.0 支持库而不强制使用旧版本的 support-v4。有关详细信息,请参阅 this thread
简而言之,这是支持库版本 22.2.0 中的一个错误
刚刚升级到下一个更新 22.2.1,效果很好。