Roboguice不会注入对象并导致空指针异常

时间:2014-10-21 20:36:51

标签: java android dependency-injection sharedpreferences roboguice

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

AndroidStudio的错误:

  

显示java.lang.NullPointerException               在com.tom.android.common.TomApplication.getLoggedIn(TomApplication.java:110)

我是如何注射的:

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'
    }
} 
     

依赖项{

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);
}

}

关于我做错了什么的想法?

1 个答案:

答案 0 :(得分:1)

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

RoboGuice.injectMembers(context, this);