Java findViewById在jar中返回null

Java findViewById在jar中返回null,java,android,eclipse,Java,Android,Eclipse,我有一小段代码可以在它自己的项目中正常工作(它只是一个文件选择对话框)。我想在更大的项目中使用它,因此我通过执行以下操作将FileSelector导出为jar: 右键单击FileSelect项目并单击“导出” 选择Java->JAR文件 设置“导出目标” 单击“完成” 将导出的.jar文件复制到MyProject/libs中 右键单击MyProject->Refresh 右键单击MyProject->Properties 单击“Java构建路径” 在“库”选项卡中,单击“添加jar”并选择我刚

我有一小段代码可以在它自己的项目中正常工作(它只是一个文件选择对话框)。我想在更大的项目中使用它,因此我通过执行以下操作将FileSelector导出为jar:

  • 右键单击FileSelect项目并单击“导出”

  • 选择Java->JAR文件

  • 设置“导出目标”

  • 单击“完成”

  • 将导出的.jar文件复制到MyProject/libs中

  • 右键单击MyProject->Refresh

  • 右键单击MyProject->Properties

  • 单击“Java构建路径”

  • 在“库”选项卡中,单击“添加jar”并选择我刚刚复制到MyProject中的.jar文件

我收到错误“生成最终存档时出错:找到APK:AndroidManifest.xml的重复文件”,所以我只是从要导出到jar的文件列表中取消选择AndroidManifest.xml,然后再次创建它

MyProject似乎构建得很好,但是当我运行它并单击应该显示文件选择对话框的按钮时,我得到了一个空指针异常。我回去在FileSelection代码中找到了它,这是一个简单的

mFilterSpinner = (Spinner) mDialog.findViewById(R.id.fileFilter);

这将返回null。在项目设置中是否有我没有做过的事情允许这样的调用在jar中工作?或者我打包和导入jar的过程有什么问题吗?

如果您使用的是Android UI组件,我认为您应该在另一个项目中将其作为Android库使用。

如果您使用的是Android UI组件,我认为您应该在另一个项目中使用它作为Android库。
R
类中的值将被修改。因此,在Jar中使用编译的R时,您无法找到视图


唯一的解决方案是使用android库项目,并通过它引用资源和源代码。否则,您可以通过将android库项目放入AAR存档来引用它

将修改
R
类中的值。因此,在Jar中使用编译的R时,您无法找到视图


唯一的解决方案是使用android库项目,并通过它引用资源和源代码。否则,您可以通过将android库项目放入AAR存档来引用它

它是一个返回null的Android UI组件。你把它用作Android库是什么意思?你不能把Android UI组件放在jar AFAIK中。这就是为什么ActionbarSherlock是一个Android库,因为它有UI元素。您可以标记一个没有清单但使用Android UI组件作为库项目的Android项目,并将其作为库包含在其他项目中。所以我所要做的就是在FileSelector项目中检查“is Library”,并遵循导出jar的相同过程,它应该可以工作吗?不,您将当前jar项目标记为库,并将其添加为其他项目中的库。更多详情请参见think link。它是一个返回null的Android UI组件。你把它用作Android库是什么意思?你不能把Android UI组件放在jar AFAIK中。这就是为什么ActionbarSherlock是一个Android库,因为它有UI元素。您可以标记一个没有清单但使用Android UI组件作为库项目的Android项目,并将其作为库包含在其他项目中。所以我所要做的就是在FileSelector项目中检查“is Library”,并遵循导出jar的相同过程,它应该可以工作吗?不,您将当前jar项目标记为库,并将其添加为其他项目中的库。更多详情请参见think link。如何将较大项目中的
R.id.fileFilter
注入JAR?如何设置视图上下文?@his It没有做任何特殊的事情。fileFilter在res/layout中的xml文件中声明。它在原始项目中但在jar中不起作用的引用方式是:private void prepareFilterSpinner(String[]fitlesFilter){mFilterSpinner=(Spinner)mDialog.findViewById(R.id.fileFilter);如何将较大项目中的
R.id.fileFilter
注入JAR?如何设置视图上下文?@his It没有做任何特殊的事情。fileFilter在res/layout中的xml文件中声明。在原始项目中有效但在JAR中无效的引用方式是:private void prepareFilterSpinner(String[]fitlesFilter){mFilterSpinner=(微调器)mDialog.findViewById(R.id.fileFilter);什么是AAR存档(谷歌似乎不知道…:))。这种方法能让我使用这些资源而不必总是在我的工作区打开库吗?AAR代表Android ARchive。是的,如果你将库项目归档到一个AAR文件中,你可以像使用普通jar文件一样使用库项目。但我认为它处于早期开发阶段,你可以使用gradle构建系统。你可以什么是AAR档案(谷歌似乎不知道…:))。这种方法能让我使用这些资源而不必总是在我的工作区打开库吗?AAR代表Android ARchive。是的,如果你将库项目归档到一个AAR文件中,你可以像使用普通jar文件一样使用库项目。但我认为它处于早期开发阶段,你可以使用gradle构建系统。你可以请点击这里: