如何从另一个模块调用布局 xml
How to call layout xml from another module
我将 MainActivity 中的 ContentView 设置为
setContentView(R.layout.activity_main);
我在包中还有其他模块,对于我在 gradle 文件 apply plugin: 'com.android.library'
中定义的那个模块,这一次也有 res/layout/activity_main.xml
那么我可以从 MainActivity 的另一个模块调用 activity_main.xml 吗?
是的,你可以,但你的模块必须有另一个 Android packageId(编辑:只是为了确保,你在你的 Android 清单中声明你的 packageId)。
所以例如您的应用程序模块有 com.example.app
,图书馆有 com.example.lib
。然后您可以通过 com.example.app.R
或 com.example.lib.R
访问您的资源 ID。
因此,您的库模块中的布局会有 com.example.lib.R.layout.activity_main
。
我认为您正在寻找的是 http://developer.android.com/tools/projects/index.html
的开发注意事项部分
根据资源,您不能在不同的模块中调用相同的 2 个布局:一个会覆盖另一个,即使您的 R 文件已正确命名空间。这是非常令人失望的行为,但看起来唯一的解决方法是添加前缀。
啊哈,记得将 CustomView 保留为 public。我错过了几个小时。
我将 MainActivity 中的 ContentView 设置为
setContentView(R.layout.activity_main);
我在包中还有其他模块,对于我在 gradle 文件 apply plugin: 'com.android.library'
中定义的那个模块,这一次也有 res/layout/activity_main.xml
那么我可以从 MainActivity 的另一个模块调用 activity_main.xml 吗?
是的,你可以,但你的模块必须有另一个 Android packageId(编辑:只是为了确保,你在你的 Android 清单中声明你的 packageId)。
所以例如您的应用程序模块有 com.example.app
,图书馆有 com.example.lib
。然后您可以通过 com.example.app.R
或 com.example.lib.R
访问您的资源 ID。
因此,您的库模块中的布局会有 com.example.lib.R.layout.activity_main
。
我认为您正在寻找的是 http://developer.android.com/tools/projects/index.html
的开发注意事项部分根据资源,您不能在不同的模块中调用相同的 2 个布局:一个会覆盖另一个,即使您的 R 文件已正确命名空间。这是非常令人失望的行为,但看起来唯一的解决方法是添加前缀。
啊哈,记得将 CustomView 保留为 public。我错过了几个小时。