Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RoboGuice自定义模块应用程序上下文_Android_Dependency Injection_Roboguice - Fatal编程技术网

Android RoboGuice自定义模块应用程序上下文

Android RoboGuice自定义模块应用程序上下文,android,dependency-injection,roboguice,Android,Dependency Injection,Roboguice,如何在自定义模块中获取应用程序上下文?以下是我的模块代码: public class MyModule extends AbstractModule { @Override @SuppressWarnings("unchecked") protected void configure() { // Package Info try { final PackageInfo info = application.getP

如何在自定义模块中获取应用程序上下文?以下是我的模块代码:

public class MyModule extends AbstractModule {
    @Override
    @SuppressWarnings("unchecked")
    protected void configure() {
        // Package Info
        try {
            final PackageInfo info = application.getPackageManager().getPackageInfo(
                    application.getPackageName(), PackageManager.GET_META_DATA);
            bind(PackageInfo.class).toInstance(info);
        } catch (PackageManager.NameNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
}

我正在尝试获取应用程序的元数据。PackageInfo的默认模块版本没有元数据,因此我需要自定义绑定。

只需将其插入构造函数即可

public final class MyModule extends AbstractModule
{
    private final Context   context;

    @Inject
    public MyModule(final Context context)
    {
        super();
        this.context = context;
    }

    @Override
    @SuppressWarnings("unchecked")
    protected void configure() {
        // Package Info
        try {
            final PackageInfo info = context.getPackageManager().getPackageInfo(
                context.getPackageName(), PackageManager.GET_META_DATA);
            bind(PackageInfo.class).toInstance(info);
        } catch (PackageManager.NameNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

}

我试过这个,但没用。。我怀疑我遗漏了什么明显的东西。您知道RoboGuice 2.0中使用自定义模块的完整示例吗?RoboGuice的默认示例不使用自定义模块。@Mubix此部分来自一个工作应用程序。什么意思,没用?若上下文为null或无效,我将尝试注入ContextProvider而不是context。