【发布时间】:2014-08-21 08:25:04
【问题描述】:
我在 Android Studio 中创建了一个模块。在模块代码中,我想显示一个使用模块中定义的布局的对话框。当我引用 net.gwtr.module.R.layout.my_dialog_layout 之类的布局时,我得到了这个异常;
java.lang.ClassNotFoundException: Didn't find class "net.gwtr.module.R$layout" on path: DexPathList[[zip file "/data/app/net.gwtr.moduletest-1.apk"],nativeLibraryDirectories=[/data/app-lib/net.gwtr.moduletest-1, /vendor/lib, /system/lib]]
我认为原因是当您将模块添加到项目时会合并资源。它没有为模块包名称创建不同的资源 ID。所以我无法从模块包中获取资源。
如何在模块代码中引用模块的资源?
编辑1: 我这样引用资源;
Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.my_dialog_layout);
dialog.show();
编辑2: 我找到了一种方法,但我不想每次引用资源时都使用它。
当我通过这个获得资源 ID 时,我可以访问资源;
context.getResources().getIdentifier("my_dialog_layout", "layout", context.getPackageName())
【问题讨论】:
-
你是如何引用 R 的?请出示您的代码。
-
我编辑了我的问题
-
重现你的问题:buildToolsVersion '20.0.0' Gradle 0.12.2 Android Studio 0.8.6。还使用其他资源对其进行了测试 - 未找到 R 类。
-
@ferar1988 感谢您分享您的解决方案,您是否找到了另一种更方便的方法?
-
这里对这些问题的处理很长:stackoverflow.com/questions/62694206/…
标签: android module android-studio