首页 > 导入SlidingMenu,导致No resource found或attribute...been defined怎么解决?

导入SlidingMenu,导致No resource found或attribute...been defined怎么解决?

  1. 问题描述:
    我正在自学android,现在我做一个APP需要用到SlingMenu,于是我使用了GitHub上jfeinstein10/SlidingMenu(https://github.com/jfeinstein10/SlidingMenu)这个包,同时
    我又导入了ActionBarSherlock(http://actionbarsherlock.com/)。
    根据SlidingMenu的README.md中的Setup with ActionBarSherlock步骤,添加了依赖,如步骤4
    把SlidingMenu的各种Acitivity的父类都改为了Sherlock___Activity。

这个时候都会包buildToolsVersion版本过低的问题,然后我把版本全部改为最新如:
我的module的build文件:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "com.izp.thenews"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.1.1'
    compile project(':library-sliding-menu')
}

我更改之后的SlingMenu的build文件:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0-alpha9'
    }
}
apply plugin: 'com.android.library'
dependencies {
    compile project(':actionbarsherlock')
    compile 'com.android.support:appcompat-v7:23.1.1'
}
android {
    compileSdkVersion 17
    buildToolsVersion "23.0.2"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
    }
    sourceSets {
        main {
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']

            manifest.srcFile 'AndroidManifest.xml'
        }
    }
}

然后这里就出现下面的这样的几百行的attribute...has already been defined错误
图片描述
图片描述
图片描述
图片描述

2.我在网上google了一下,有人说吧V7换成V4就行了。

于是我把V7包去掉,添加最新V4依赖,然后attribute...has already been defined错误是不见了,

但是有出现了No resource found的问题,如图所见。
图片描述

3.只使用SlidingMenu,在项目中删除ActionBarSherlock依赖:
如果在V4下,报错如下:

4.只使用SlidingMenu,在项目中删除ActionBarSherlock依赖:
如果在V7下,报错如下:

我删除ActionBarSherlock这个module的步骤
1、删除所有项目对ActionBarSherlock的依赖
2、在ProjectStructure中删除ActionBarSherlock
3、在project目录下删除ActionBarSherlock

5.新建一个项目重新仅仅导入SlidingMenu,在默认的V7下仅仅更改了buildToolsVersion之后居然正常编译运行。
但奇怪删除V7改为V4之后就报下面的资源问题:

6.新建一个项目重新仅仅导入SlidingMenu,在默认的V7下仅仅更改了buildToolsVersion之后居然正常编译运行。
但奇怪删除V7改为V4之后就报下面的资源问题:


7.新建一个项目不导入SlidingMenu,仅仅把在默认的V7改为V4之后就报下面的资源问题:

Clean peoject无数次,重新启动无数次,无解依然不能编译通过。
可是我明明有一个项目既是V4又导入了SlidingMenu的呀,如下:


目前为止这个项目都还正常啊,可是我另外新建一个就编译通不过了,哎!
8、最后大家平时遇到这种问题怎么解决的?我具体什么做错了?


人家SlingMenu已经声明了需要 v7 包支持,你改成 v4 当然不行了,AppCompat 属于 v7 。再则检查你的各个 module ,是否引用了相同的 support包,如果有两个以上(含两个)引用了相同的包,就会冲突报错,解决办法就是把多余的 support 包解除掉,只留一个。

【热门文章】
【热门文章】