Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android findViewById为依赖项中的布局返回null_Android_Android Studio_Android Gradle Plugin - Fatal编程技术网

Android findViewById为依赖项中的布局返回null

Android findViewById为依赖项中的布局返回null,android,android-studio,android-gradle-plugin,Android,Android Studio,Android Gradle Plugin,我有一个使用库C的应用程序A。库C包含一个需要库D资源的活动 我希望D中的资源被绑定到C中,但在C中执行findViewById(R.id.resource\u from\u D)时,会得到一个空值。我如何才能让它工作 C没有默认的项目结构,但C本身不包含任何资源。而且我指定了 C的build.gradle中的sourceset{main{java.srcDirs=['src']} 我还将proguard和minifyEnabled设置为false,以避免错误删除任何资源 我还尝试为所有可传递依

我有一个使用库C的应用程序A。库C包含一个需要库D资源的活动

我希望D中的资源被绑定到C中,但在C中执行
findViewById(R.id.resource\u from\u D)
时,会得到一个空值。我如何才能让它工作

C没有默认的项目结构,但C本身不包含任何资源。而且我指定了
C的build.gradle中的sourceset{main{java.srcDirs=['src']}

我还将proguard和minifyEnabled设置为false,以避免错误删除任何资源

我还尝试为所有可传递依赖项设置transitive=true,但没有成功。我该怎么做才能让它工作

这是C的build.gradle,它依赖于D的资源

apply plugin: 'com.android.library'

android {
    compileSdkVersion 17
    buildToolsVersion "23.0.2"

    compileOptions.encoding = 'windows-1252'

    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 17
    }

    buildTypes {
        release {
            minifyEnabled false
        }
    }

    lintOptions {
        abortOnError false
    }

    sourceSets {
        main {
            java.srcDirs = ['src']
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }

    dexOptions {
        preDexLibraries = false
    }
}

dependencies {
    compile project(':d')
}

C的项目结构不是默认的,因此我添加了源代码的源代码集。不过,C本身并不包含任何资源

您应该能够同时使用
R
s

import com.apackage.R;

//...

int aResource = R.id.resource_from_a;
int dResource = com.dpackage.R.id.resource_from_d;

您应该能够同时使用
R
s

import com.apackage.R;

//...

int aResource = R.id.resource_from_a;
int dResource = com.dpackage.R.id.resource_from_d;

您是否导入了正确的
R
?或者尝试直接使用它,比如
com.dpackage.R
?我从A而不是D导入R。这在使用maven构建时有效,不确定为什么它不能与gradle一起工作。嗯……我不知道为什么它不能工作,但对我来说很有意义,为什么你希望在A的R中找到D的ID?我使用A和D的ID,因此,仅从D导入R也不起作用。您可以同时使用这两种方法,您可以使用
import
导入一个,并使用另一个调用全名,如
com.mydpackage.R.id.resource\u from\u D
导入正确的
R
?或者尝试直接使用它,比如
com.dpackage.R
?我从A而不是D导入R。这在使用maven构建时有效,不确定为什么它不能与gradle一起工作。嗯……我不知道为什么它不能工作,但对我来说很有意义,为什么你希望在A的R中找到D的ID?我使用A和D的ID,因此,仅从D导入R也不起作用。您可以同时使用这两种方法,您可以使用
import
导入一个,并使用另一个调用全名,如
com.mydpackage.R.id.resource\u from\u D