如何在库模块Android Studio中调用主应用程序模块功能

Posted

技术标签:

【中文标题】如何在库模块Android Studio中调用主应用程序模块功能【英文标题】:How to call main app module function in library module Android Studio 【发布时间】:2021-12-17 05:26:52 【问题描述】:

我正在处理一个现有项目,并想从库模块中调用主应用程序模块中的刷新功能。所以当库模块 verifyCode 完成后,它会调用主应用的刷新函数再次刷新视图。

build.gradle(:app)
    
dependencies 
    .
    .
    .
    implementation project(path: ':dependency')

    

主应用模块

open class BaseActivity : AppCompatActivity() 
    lateinit var pref: PreferenceManager
    lateinit var repository: BasicRepository

    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        pref = PreferenceManager(this)
        setupContentWindow()
    

    override fun onResume() 
        super.onResume()

    if (pref.checkCredential()) 
        val intent = PinCodeActivity.intent(this, true, pref.token())
        startActivity(intent)
    
    refresh()


private fun refresh() 
    //refresh user data

库模块

private void checkCode(String pin, String token) 
    APIManager.getInstance().verifyCode(token, pin, new Callback<String>() 
        @Override
        public void onResponse(Call<String> call, Response<String> response) 
            String responseUser = response.body();
            if (response.code() == 200) 
                if (responseUser == "true") 
                    setResult(RESULT_OK);
                    finish();
                    //call main app refresh function after the endpoint return 200
                 else 
                    //do something
                
             else 
                  //do something
            
        

        @Override
        public void onFailure(Call<String> call, Throwable t) 
            //do something
        
    );
 

【问题讨论】:

您的构建系统不发送数据。如果你想传递数据,你调用一个方法并返回它。 我的意思是如何将数据从依赖模块的文件传递到应用模块的文件?我不熟悉 android 开发,所以我不知道如何更好地命名它。请随时编辑我的问题! @GabeSechan 我再次编辑问题,现在应该更清楚我想要实现的目标。 【参考方案1】:

您不能从构建 gradle 文件中传递数据。您需要使用意图/广播在模块之间发送数据。

【讨论】:

或者只是函数调用。仅当模块是不同的活动时才使用意图和广播。这种情况很少发生(尽管可以)。 我的意思是如何将数据从依赖模块的文件传递到应用模块的文件?我可以将数据从应用程序模块的文件发送到依赖模块文件,但不能以其他方式发送。当我尝试“Intent(this, className::class.java)”时,它找不到类名,我也无法在顶部导入它。我不知道如何以其他方式引用它。现在我可以传递数据依赖-> app only。 @14079_Z 您只使用 Intent 来启动 Activity 或 Service。那是你想要做的吗?或者您是否将数据从活动返回到启动器?或者你使用依赖 qs 一个库,你应该只是调用函数?不清楚你在这里做什么。但在任何情况下,您都不想创建一个循环的 gradle 依赖项。 创建项目的人将整个依赖文件复制到项目中。我正在尝试从依赖项文件中的应用程序模块文件中调用某些函数。我不知道实现它。

以上是关于如何在库模块Android Studio中调用主应用程序模块功能的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio:是不是可以在主模块中定义库模块清单占位符?

Kotlin Android Extensions 在库类型模块中不起作用

android:fcm在库模块中

Android Studio 打包 jar 及 aar 包

Android Studio 打包 jar 及 aar 包

Android Studio 打包 jar 及 aar 包