我在导航抽屉上获得以下日志:
11-27 09:32:11.811: E/AndroidRuntime(2149): java.lang.NoSuchFieldError: No static field DrawerArrowToggle of type [I in class Landroid/support/v7/appcompat/R$styleable; or its superclasses (declaration of 'android.support.v7.appcompat.R$styleable' appears in /data/app/com.exa-1/base.apk)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.support.v7.app.DrawerArrowDrawable.<init>(DrawerArrowDrawable.java:64)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.support.v7.app.ActionBarDrawerToggle$DrawerArrowDrawableToggle.<init>(ActionBarDrawerToggle.java:469)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.support.v7.app.ActionBarDrawerToggle.<init>(ActionBarDrawerToggle.java:222)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.support.v7.app.ActionBarDrawerToggle.<init>(ActionBarDrawerToggle.java:150)
11-27 09:32:11.811: E/AndroidRuntime(2149): at com.exa.MainActivity$2.<init>(MainActivity.java:199)
11-27 09:32:11.811: E/AndroidRuntime(2149): at com.exa.MainActivity.onCreate(MainActivity.java:201)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.app.Activity.performCreate(Activity.java:5933)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.app.ActivityThread.access$800(ActivityThread.java:144)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.os.Handler.dispatchMessage(Handler.java:102)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.os.Looper.loop(Looper.java:135)
11-27 09:32:11.811: E/AndroidRuntime(2149): at android.app.ActivityThread.main(ActivityThread.java:5221)
11-27 09:32:11.811: E/AndroidRuntime(2149): at java.lang.reflect.Method.invoke(Native Method)
11-27 09:32:11.811: E/AndroidRuntime(2149): at java.lang.reflect.Method.invoke(Method.java:372)
11-27 09:32:11.811: E/AndroidRuntime(2149): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
11-27 09:32:11.811: E/AndroidRuntime(2149): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
我正在尝试使用箭头将我的抽屉更新到Play商店中的抽屉,这是我的导入:
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
日志对应于我的代码中的以下行:
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.string.app_name, //
R.string.app_name // <~~~~ THIS LINE, Culprit identified!
) {
public void onDrawerSlide(View drawerView, float slideOffset) {
if(slideOffset > .55 && !drawerOpen){
onDrawerOpened(drawerView);
drawerOpen = true;
} else if(slideOffset < .45 && drawerOpen) {
onDrawerClosed(drawerView);
drawerOpen = false;
}
}
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
我已经将支持库v7添加到我的libs文件夹中并添加到构建路径中,它在Order and Export中被勾选,但我可以在我的gen文件夹中看到它的R的android.support.v7.appcompact的.java。
我还将appcompact_v7添加为参考项目。我在这里想念什么?
答案 0 :(得分:3)
我没有看到代码有任何问题。
尝试使用项目资源导入v7 appcompat,而不是直接将appcompat库.jar文件添加到libs文件夹。
以下是使用资源导入appcompat的链接 https://developer.android.com/tools/support-library/setup.html
答案 1 :(得分:1)
将v7 appcompat项目添加为库,将其链接到主项目中,并确保针对Android 5.0进行编译。 有关说明,请参阅Pallavi的链接。
答案 2 :(得分:1)
有点晚了,但对我来说问题是包括支持库作为我的构建路径中的库项目。除了围绕jar文件创建一个库项目之外,你还需要管理有几个版本/&#34;修订版&#34;支持库的jar文件,我将解释。
关于你标记的行,R类是在构建时生成的,所以如果你的构建失败(由于任何原因),就不会有任何R类,这就是你在哪里遇到错误的原因正在尝试访问R类。
如果您使用Intellij Idea(或Android Studio,因为它是Intellij的一个子集),请务必添加一个且仅一个&#39; (例如19.0)或者20.0或21.0)的支持库jar文件(例如android-support-v4或android-support-appcompat-v7)作为&#34;项目&#34;库,然后添加&#34;库&#34;作为依赖于使用支持库(项目结构&gt;模块)的每个&#34;模块&#34; 。添加您在包装器支持库项目中包含的相同jar,作为项目级库,并且不要忘记添加这些&#34;库&#34;作为对MAIN模块以及使用支持库的所有其他模块(eclipse项目)的依赖。
如果你正在使用其他一些库/依赖项,很可能他们正在使用支持库&android-support-v4和/或android-support-appcompat-v7,这可能会导致版本冲突(和multi dex
错误。因此,请确保在模块级别删除它们对提到的jar文件的依赖性,并将项目级库添加到这些模块中。
请注意,支持库jar文件的修订版与其名称中的版本编号之间存在差异。修订版是指Android平台的API级别(Android版本),您已下载支持库(使用SDK管理器)和(为此)jar已更新以提供该特定API级别的新功能。包含在jar名称中的版本是该特定jar所需的“最小”SDK。
选择与您正在使用的所有库兼容的修订。支持库的较新版本不一定向后兼容,某些内容可能在较新的版本中被删除。
如果你来自Eclipse,在Intellij Idea的术语中,有一个&#34;模块&#34;是一个库项目(除了代码之外还有一个带有资源(如图形)的项目,就像支持库或图表绘图库一样)。除了库项目之外,常规Eclipse项目也被视为“模块”和“项目&#34;被认为是一组(相关的)模块(一个主模块,其余模块作为库模块)。
如果您已在另一个IDE中构建项目,请确保&#34;重建&#34;你的项目(在Intellij Idea中)或&#34;清洁&#34; (在Eclpise中)在运行你的应用程序之前。遗憾的是Eclipse和Intellij Idea / Android Studio不兼容,并且由其他人创建的编译文件无法被其他人读取。