从库项目引用项目对象

| 我有一个自己制作的游戏,该游戏将有2个版本。一“轻”和一“满”。 为此,我将大部分代码放在一个库项目中。 问题是,在代码的一部分中,我必须启动一个Activity,其代码将在程序项目中,而不是在库项目中。 我发现它将无法编译。 我要解决的问题是为库项目中的活动创建一个虚拟类,但这可能不是正确的方法。     
已邀请:
如果您说库项目的某些部分依赖于一个类,该类将在一个应用程序项目中具有一个实现,而在另一个应用程序项目中具有另一个或可能不存在的实现,那么我怀疑一个简单的界面会有所帮助。 在库项目中声明一个接口,并将该项目中的所有引用更改为您的接口。在应用程序项目中,提供不同的类来实现该接口,并根据精简版或完整版改变其行为。 我看不到对活动的依赖会如何表现出来,因为在大多数情况下,您是通过ComponentName通过字符串引用活动的。 举一个小例子,假装我们希望能够将广告横幅图像视图注入我们精简版的视图组中,但是什么也不做,或者也许隐藏我们完整版中的视图组。 在库项目中,声明AdBannerProvider的接口:
public interface AdBannerProvider
{
    public void InjectAd(ViewGroup v);
}
在库项目的“活动”中,可能需要根据亮灯或满灯显示广告,请按以下方式引用界面:
private void getAdBanner(AdBannerProvider pProvider, ViewGroup pAdView)
{
     pProvider.InjectAd(pAdView);
}
然后在精简版中,提供AdBannerProvider的实现,该实现针对该版本执行正确的操作:
public class LiteAdBannerProviderImpl implements AdBannerProvider {
   @Override
   public void InjectAd(ViewGroup v) {
          // do something useful for the lite edition, like add an imageview to the passed viewgroup
   }
}
在完整版中,另一个类为该版本做了正确的事情:
public class FullAdBannerProviderImpl implements AdBannerProvider {

    @Override
    public void InjectAd(ViewGroup v) {
        // do something useful for the full edition, like maybe set the viewgroup to GONE or INVISIBLE
    }
}
    
应用程序项目应取决于库项目的组件/资源。如果需要从库启动活动/服务,则可能会发布具有正确组件集的意图。
Intent intent=new Intent();
intent.setComponent(new ComponentName(\"com.pkg\", \"com.pkg.class\"));
startActivity(intent); 
    

要回复问题请先登录注册