首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dagger-2 (android)的空指针异常

Dagger-2 (android)的空指针异常
EN

Stack Overflow用户
提问于 2017-06-17 06:35:31
回答 2查看 1.1K关注 0票数 1

详细信息

UseContex类上的空指针异常,同时使用UseContex class.UseContex类的'printToast()‘方法扩展了在MainActivity中打印don的mainActivity.If,而不是它在上下文对象上不包含空指针,但是在UseContex中显示空指针异常的东西是相同的。

AppComponent

代码语言:javascript
复制
@Singleton @Component(modules = {AppModule.class})
public interface AppComponent {
void inject(DaggerApplication daggerApplication);
void inject(MainActivity mainActivity);

}

AppModule

代码语言:javascript
复制
@Module
public class AppModule {
private final DaggerApplication application;
public AppModule(DaggerApplication application) {
    this.application = application;
}
@Singleton
@Provides
Context providesApplicationContext(){
    return  application;
}
@Singleton
@Provides
UseContex provideUsecontex(){
  return new UseContex();
}
}

UseContex

代码语言:javascript
复制
public class UseContex extends MainActivity{
public  void printToast(){
Log.e("User dao impl","Hello user dao");
Toast.makeText(context, "helo", Toast.LENGTH_SHORT).show();
}
}

MainActivity

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {
@Inject
UseContex useContex;
@Inject
public Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);    
((DaggerApplication)getApplication()).getAppComponent().inject(this);
     useContex.printToast();
}
}

DaggerApplication

代码语言:javascript
复制
public class DaggerApplication extends Application {
AppComponent appComponent;
@Override
public void onCreate() {
    super.onCreate();
    appComponent = DaggerAppComponent.builder().appModule(new 
AppModule(this)).build();
    appComponent.inject(this);

}
public AppComponent getAppComponent(){return  appComponent;}

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-17 07:48:19

Dagger没有注入您的UseContex子类,因为AppComponent没有@provide a UseContexAppComponent只是一个@providing,一个MainActivity,您正在将一个UseContex作为它的多态基类传递给它,并希望它能够工作。相反,@provideAppComponent和Dagger中的一个UseContex将注入您的基类字段。

票数 0
EN

Stack Overflow用户

发布于 2017-06-19 05:35:43

它显示空指针,因为上下文不是在UseContex类中定义的。您必须使用"getApplicationContext“来代替该行中的”上下文“。

代码语言:javascript
复制
Toast.makeText(context, "helo", Toast.LENGTH_SHORT).show();

替换

代码语言:javascript
复制
Toast.makeText(getApplicationContext, "helo", Toast.LENGTH_SHORT).show();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44601578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档