use*_*412 4 android dependency-injection dagger-2
我正在研究来自许多来源的 Dagger 2,例如:http : //ferndocejas.com/2015/04/11/tasting-dagger-2-on-android/ 但我仍然没有找到我的问题的答案.
我处理非常复杂的应用程序,其中包含数十个片段和几个我想使用 DI(匕首 2)的活动。对于所有这些片段和活动,我有一个 BaseActivity 和一个 BaseFragment。但是,据我阅读和尝试,为了在我的 MainActivity 中使用 @Inject,我必须在 Component 接口中指定它,并在 onCreate 方法中调用 getApplicationComponent().inject(this) 。当我仅针对 BaseActivity 执行此操作时,从不注入 MainActivity 中的 @Inject 注释字段。更糟糕的是,在执行代码的特定部分并抛出 NPE 之前,我没有发现这一点。
到目前为止,这对我来说是一个交易破坏者,因为这可能是许多崩溃的根源。我需要在 Component 接口中指定数十个片段和活动,并且不要忘记在每个 onCreate 方法中调用注入。
我很高兴听到任何解决方案,因为我真的很想使用 DI..
代码示例:
@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent {
void inject(BaseActivity baseActivity);
Analytics analytics();
}
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getApplicationComponent().inject(this);
}
}
public class MainActivity extends BaseActivity {
@Inject
Analytics analytics;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
analytics.log("event1"); // THROWS NPE!
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4274 次 |
| 最近记录: |