【问题标题】:Calling helper function inside android application project from a library project从库项目中调用 android 应用程序项目中的辅助函数
【发布时间】:2014-03-08 07:29:50
【问题描述】:

我有一个 android 应用程序项目。我创建了一个库项目并在应用程序项目中添加了引用。现在我需要从库项目中调用/访问应用程序项目中的某些函数/类/方法。我怎样才能做到这一点 ?

【问题讨论】:

  • 我认为这很容易......你只需要创建类的对象并直接调用方法。为此你只需要导入包
  • 如果你能描述一下你做了什么以及你遇到了什么困难会更好。
  • 这不是关于从另一个类调用一个类的方法。问题是我试图从库项目中调用 Android 应用程序项目中的方法。我无法在库项目中导入应用程序包来创建对象和调用方法。
  • 所以你使用你的 android 应用程序项目作为你的库项目的参考,但你并没有真正将你的应用程序添加到库项目中?
  • 我相信你需要把你想要访问的文件放到一个新项目中,然后在你的库中引用它,因为访问你现有的项目会带来循环依赖。我不确定这个会工作,但值得一试....

标签: function android library-project


【解决方案1】:

在库中创建一个接口,定义您希望库调用的函数。让应用程序实现接口,然后将实现对象注册到库中。然后库可以通过该对象调用应用程序。

在库中,声明接口并添加注册函数:

public class MyLibrary {
  public interface AppInterface {
    public void myFunction();
  }

  static AppInterface myapp = null;

  static void registerApp(AppInterface appinterface) {
    myapp = appinterface;
  }
}

然后在您的应用程序中:

public class MyApplication implements MyLibrary.AppInterface {
  public void myFunction() {
    // the library will be able to call this function
  }

  MyApplication() {
    MyLibrary.registerApp(this);
  }
}

您的库现在可以通过 AppInterface 对象调用应用程序:

// in some library function
if (myapp != null) myapp.myFunction();

【讨论】:

  • 让我的一天轻松多了.. 只能给一个赞.. 太棒了。
【解决方案2】:

您可以只创建该特定类的对象,然后您可以直接调用该方法或变量。

class A{
  public void methodA(){
    new B().methodB();
    //or
    B.methodB1();
  }
}

class B{
  //instance method
  public void methodB(){
  }
  //static method
  public static  void methodB1(){
  }
}

别忘了导入必要的包。

【讨论】:

  • 我试图从库项目中调用,因此我无法导入父应用程序的包,其中存在类和相关方法。
猜你喜欢
  • 2021-03-21
  • 2012-09-13
  • 1970-01-01
  • 2013-05-12
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多