Android findViewById为依赖项中的布局返回null
我有一个使用库C的应用程序A。库C包含一个需要库D资源的活动 我希望D中的资源被绑定到C中,但在C中执行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,以避免错误删除任何资源 我还尝试为所有可传递依
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