【问题标题】:how to let a library know a non activity class?如何让图书馆知道非活动类?
【发布时间】:2017-11-30 12:39:09
【问题描述】:

也许这个答案存在,但我在这里和谷歌都找不到。

我有一个名为 Handler 的静态单例类(非活动类)。我在我的项目中添加了一个库,我想在库的 MainActivity 中使用处理程序。

-- app
    --java
        --com.mytest
            --Handler
-- library
    --java
        --com.mylib
            --MainActivity

我尝试在 MainActivity 中导入 com.mytest.Handler 但没有成功。 也许我应该向库添加一些依赖项?我真的迷路了。

已编辑:

MainActivity 代码:

public class MainActivity extends AppCompatActivity {
    private Button mButtonMoreApps = null;
    private ArrayList<String> mListUrl = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(com.mylib.R.layout.main_activity);

    }
}

mylib 分级:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner     "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.config
            debuggable true
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-    core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile "com.android.support:cardview-v7:25.3.1"
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:customtabs:25.3.1'
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-core:10.2.1'
    compile 'com.google.firebase:firebase-database:10.2.1'
    compile 'com.google.firebase:firebase-ads:10.2.1'
    compile 'com.google.firebase:firebase-crash:10.2.1'
    compile 'com.facebook.android:audience-network-sdk:4.20.0'
    compile ('com.facebook.android:facebook-android-sdk:4.20.0') // app     invites
    {
        exclude group: 'com.android.support'
    }
    testCompile 'junit:junit:4.12'
}

【问题讨论】:

  • 你的类 com.mytest.Handler 是公开的吗?
  • 是的。公共类处理程序
  • 可以添加代码(activity和gradle脚本)吗?

标签: java android dependencies shared-libraries static-methods


【解决方案1】:

您不应该通过导入库来调用库中的应用程序方法。您可以改用侦听器。

例如:https://stackoverflow.com/a/31626226/2176401

库类对应于那里的Observable 类,您的应用程序类应该实现Observer。之后就可以使用notifyObservers方法调用你在Handler类中编写的代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多