java - Roboguice 未注入(inject)对象并导致空指针异常

标签 java android dependency-injection sharedpreferences roboguice

我正在尝试创建(注入(inject))一个导致 NullPointerException 的 SharedPreferences 对象,但我似乎无法弄清楚原因。

AndroidStudio 报错:

java.lang.NullPointerException at com.tom.android.common.TomApplication.getLoggedIn(TomApplication.java:110)

我是如何注入(inject)的:

public class TomApplication extends Application {

    @Inject
    private SharedPreferences sharedPreferences;

第 (110) 行给出错误:

Boolean loggedIn = sharedPreferences.getBoolean(PrefsHelper.LOGGED_IN, false);

这是我的 app/build.gradle 文件:

apply plugin: 'com.android.application'

android { compileSdkVersion 10 buildToolsVersion "20.0.0"

defaultConfig {
    applicationId "com.tom.android"
    minSdkVersion 10
    targetSdkVersion 20
}

buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
} 

dependencies {

compile 'com.android.support:support-v4:20.0.0'

compile 'org.roboguice:roboguice:2.0'

compile files('libs/android-sqlite-asset-helper.jar') 

}

最后,这是我的模块:

package com.tom.android.common.module;

import com.google.inject.AbstractModule; 
import roboguice.inject.SharedPreferencesName;

public class TomModule extends AbstractModule {

@Override
protected void configure() {
 bind(String.class).annotatedWith(SharedPreferencesName.class).toProvider(PreferencesNameProvider.class);
}

}

关于我做错了什么有什么想法吗?

最佳答案

您应该在构造函数中添加以下内容:

RoboGuice.injectMembers(context, this);

关于java - Roboguice 未注入(inject)对象并导致空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495852/

相关文章:

java - android项目的基本文件夹的路径是什么?

java - 如果您的模块本身将参数作为构造函数传入,如何注入(inject)依赖项?

java - 类上的多个 Deltasike securityBindingType 注释

android - 无法在 Android 应用程序中对齐复选框(水平/垂直)

java - 无法启动 Activity ComponentInfo{Activity} : android. view.InflateException:二进制 XML 文件行 #12:膨胀类 fragment 时出错

android - 最佳实践 - 每次都保留引用或实例化?

c# - 在 Azure 函数 V2 上注册第 3 方 DI 框架 (Lamar/Autofac) 的正确方法

.net-core - 无法使用 DI 内部函数与 .net core Azure Web 作业中的 ServiceBusTrigger 参数绑定(bind)服务实现

java - 如何根据日期和时间自动运行特定的代码块?

java - 错误 java.sql.SQLException : near "-": syntax error