如何在android中从另一个项目和包导入.java

如何在android中从另一个项目和包导入.java,java,android,eclipse,import,Java,Android,Eclipse,Import,我们正在大学里做一个项目(项目a),这个项目必须从一个班级扩展到另一个项目(项目B),这是几年前做的。 这是在Eclipse下工作,并为android开发应用程序,所以这实际上是我们正在讨论的活动 到目前为止,我已经尝试过: 在项目A的生成路径(在“项目”选项卡中)上添加项目B 导入,带有完整的包名和.java名称 问题是,我找到的每个解决方案都是用于处理.jar、.class甚至.apk文件的,但我不使用这些文件,项目B是一个简单的项目,其中包含了.java文件 更清楚一点,项目a有一个名

我们正在大学里做一个项目(项目a),这个项目必须从一个班级扩展到另一个项目(项目B),这是几年前做的。 这是在Eclipse下工作,并为android开发应用程序,所以这实际上是我们正在讨论的活动

到目前为止,我已经尝试过:

  • 在项目A的生成路径(在“项目”选项卡中)上添加项目B
  • 导入,带有完整的包名和.java名称
问题是,我找到的每个解决方案都是用于处理.jar、.class甚至.apk文件的,但我不使用这些文件,项目B是一个简单的项目,其中包含了.java文件

更清楚一点,项目a有一个名为ClassFromProjectA的类,项目B有一个类似
ClassFromProjectB
的类<代码>ClassFromProjectA如下所示:

public class ClassFromProjectA extends ClassFromProjectB{}
public class ClassFromProjectB extends ListActivity implements OnInitListener, OnGesturePerformedListener {}
ClassFromProjectB如下所示:

public class ClassFromProjectA extends ClassFromProjectB{}
public class ClassFromProjectB extends ListActivity implements OnInitListener, OnGesturePerformedListener {}
ClassFromProjectB所做的“唯一”事情是,uppon从它扩展,它更改ListView的默认布局,应用特定的导航选项,将手势应用到从它扩展的每个活动,以及更多的调整

如果我这样做:

public class ClassFromProjectA extends ListActivity{}
我的班级一切正常,没有错误,没有警告,什么都没有

我们绝对确信
ClassFromProjectB
正在运行,这是一个以前成功的大学项目,它的文件中也有一个示例活动来检查功能,一切都很顺利。这就是问题所在,它之所以有效,是因为它位于同一个项目文件中。但我们不能这样做,我们必须导入和扩展,它不起作用


请告诉我您是否知道如何进行此操作,或者为我指出正确的方向。

请尝试在projectA中引用projectB,如下所示:

  • 打开projectA的“属性”窗口
  • 转到“安卓”选项卡
  • 单击“库”中的“添加”按钮
  • 选择projectB作为参考

  • 在此之后,您可以从projectB导入类。

    如果您有需要包含在项目(项目A)中的完整项目B,您可以做什么

  • 以以下方式将项目B设置为库:
    • 在Eclipse中右键单击项目B,然后单击属性
    • 选择Android,然后选中isLibrary复选框。
  • 一旦项目B是一个库,您就必须以以下方式将库B(以前的项目B)添加到项目a中:
    • 在Eclipse中右键单击项目A,然后单击属性
    • 选择Android,然后单击添加…。
    • 您应该会看到一个列表,其中包含您机器上eclipse中的所有库项目。您还应该看到项目B。选择它并单击确定。
    • 您应该在库列表中看到项目B。

  • 现在,您应该能够将包从项目B导入到项目A,并毫无问题地使用其类。

    什么是“不工作”意思?编译时是否显示一些错误?错误有“NoClassDefFoundError”、“UnableToResolveSuperClass”、“无法实例化activity ComponentInfo”等,所有这些都与未创建我的类有关。哦,我的。。。。。你完全正确。是的,我们找到了由开发上一个项目的学生制作的文档*.pdf。他们说了一些关于库的事情,将android:islibrary=true添加到项目B和android.library.reference.1=,现在我意识到它是一个相对路径而不是包路径,应该重写(或者通过Eclipse链接,这要容易得多)。谢谢!。现在的问题是它一直崩溃,说“无法实例化活动组件信息”,还说“NullPointerException”。我认为这是一个改进,但我仍然不确定它现在是否正常工作(然后我的应用程序中出现了错误)。活动组件信息是您在项目A中创建的活动吗?或显示的项目中使用的活动?在这两种情况下,您都必须在项目A的AndroidManifest.xml文件中添加活动,您这样做了吗?不,不是这样。是android emulator在尝试启动我的应用程序时抛出的东西。我已经确定(到处使用日志进行调试:D)ClassFromProjectB正在进入其onCreate方法,我将进一步记录所有内容,直到我确定应用程序崩溃的位置。PS:“java.lang.RuntimeException:无法启动活动组件信息{com.alas.gravadora/com.alas.gravadora.gravadora}:java.lang.NullPointerException”好的,我找到了应用程序崩溃的地方。在对ClassFromProjectA调用“super.onCreate()”之后,我立即调用setContentView。好的,ProjectB更改的主要内容之一就是精确的布局,所以可能它弄乱了布局,但是没有提供进一步的错误信息(这似乎是一个NullPointerException)。如果我在setContentView()之后创建一个日志条目,它不会在Logcat中打印。我认为这是相当安全的判断,它是混乱的一切。我将尝试不做setContentView并发回。是的,回答与上面相同。谢谢,这很有效,但现在面临另一个问题(或者同样的问题,还不确定)。请参见对上一答案的评论。