无法从另一个模块调用方法:Android studio

时间:2017-05-26 09:03:25

标签: android android-module

我在android studio中有两个模块

  1. 标准版Android 应用模块
  2. 域名模块
  3. 域模块已添加到settings.gradlebuild.gradle

    include ':mobile', ':domain'&  compile project(':domain')分别喜欢这个

    内部域模块我有一个这样的类:

    public class DomainUtils {
    
        Context mContex;
        public DomainUtils(Context context){
            this.mContex = context;
        }
        public  void toast(String string){
            Toast.makeText(mContex, string,Toast.LENGTH_LONG).show();
        }
        public String returnHi(){
            return "hi";
        }
    }
    

    但是当我尝试拨打new DomainUtils(context).toast("hi");

    来自App模块中的

    1. DomainUtils中的方法不执行
    2. 程序流程不会继续到调用类的下一行(程序流程停止"
    3. 我没有在logcat中看到任何错误日志。
    4. ------------ ----------

      当我运行方法returnHi()时它工作正常。

3 个答案:

答案 0 :(得分:6)

首先在主项目文件夹settings.gradle内提到图书馆

include ':app', ':domain'

并包括版本(如果可用),例如

include ':app', ':library-2.19.0'

现在位于路径app下的MainProject>app>build.gradle文件夹中包含

dependencies {
  ..........
  compile project(':domain')
}

如果可用,请再次包含版本详细信息。查看 this 了解更多详情

根据评论,如果正确包含库,您可以再进行一次验证。清理和重建应该配置正确,但仍然只是确保Android Studio更新以下内容。

检查app.iml是否包含模块

MainProject > app > app.iml

<component>标签中应该有一个条目,如下所示

<orderEntry type="module" module-name="domain" exported="" />

编辑:

尝试在Toast内运行runOnUiThread消息。它应该解决错误。

答案 1 :(得分:3)

在构建项目之前,不要忘记在build.gradle中添加模块。

dependencies {

  compile project(':domain')
}

然后在调用方法时传递当前的类上下文,如下所示。

 new DomainUtils(YourClassName.this).toast("hi");

答案 2 :(得分:-1)

从文件settings.gradle添加完整路径模块。

包含&#39;:your_module&#39;

项目(&#39;:your_module&#39;)。projectDir = new File(settingsDir,&#39; absolute_path&#39;)。

absolute_path从文件夹容器settings.gradle

开始