演示者注入在登录和导航活动中运行良好,与在MW活动中一样,它返回null
黄油刀在MW活动中也不工作,在其他活动中工作良好
public class abcApplication extends Application {
ApplicationComponent mApplicationComponent;
@Override
public void onCreate() {
super.onCreate();
mApplicationComponent = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this))
.build();
mApplicationComponent.inject(this);
}
public static abcApplication get(Context context) {
return (abcApplication) context.getApplicationContext();
}
public ApplicationComponent getComponent() {
return mApplicationComponent;
}
// Needed to replace the component with a test specific one
public void setComponent(ApplicationComponent applicationComponent) {
mApplicationComponent = applicationComponent;
}
}
public class BaseActivity extends AppCompatActivity {
private ActivityComponent mActivityComponent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public ActivityComponent activityComponent() {
if (mActivityComponent == null) {
mActivityComponent = DaggerActivityComponent.builder()
.activityModule(new ActivityModule(this))
.applicationComponent(abcApplication.get(this).getComponent())
.build();
}
return mActivityComponent;
}
}
public class NavigationActivity extends BaseActivity implements NavigationView {
@Inject
DataClient mDataClient;
@Bind(R.id.drawer_layout)
protected DrawerLayout mDrawerLayout;
@Bind(R.id.navList)
ExpandableListView mExpandableListView;
private ActionBarDrawerToggle mDrawerToggle;
private String mActivityTitle;
private ExpandableListAdapter mExpandableListAdapter;
private List<String> mExpandableListTitle;
private Map<String, List<String>> mExpandableListData;
private Map<String, String> activityMap;
private int lastExpandedPosition = -1;
@Inject
NavigationPresenter navigationPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation);
activityComponent().inject(this);
ButterKnife.bind(this);
navigationPresenter.attachView(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
navigationPresenter.detachView();
}
}
public class MWActivity extends NavigationActivity implements MWView{
private MWPagerAdapter mMWPagerAdapter;
@Inject
MWPresenter MWPresenter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DrawerLayout mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ButterKnife.bind(this);
MWPresenter.attachView(this);
MWPresenter.getMarketData();
}
}
java.lang.runtimeException:无法启动活动ComponentInfo{com.abc.xyz/com.abc.trading.xyz.ui.main.mw.view.mwactivity}:java.lang.nullpointerException at android.app.activitythread.performLaunchActivity(activitythread.java:2318)at android.app.activitythread.handlelaunchActivity(activitythread.java:2396)
@PreActivity
@Component(dependencies = ApplicationComponent.class, modules = ActivityModule.class)
public interface ActivityComponent {
void inject(LoginActivity loginActivity);
void inject(NavigationActivity navigationActivity);
void inject(MWActivity mWActivity);
void inject(MWTabFragment mWTabFragment);
void inject(MWDetailsActivity mWDetailsActivity);
}
您手头有两个关于超级/子类型的问题。
正如已经指出的,解决2。您需要在MWActivity
中调用inject
,并且要使用Butternife,您需要在超级类中使用ViewHolder模式来绑定/注入字段,因为它将只注入MWActivity
,而不是NavigationActivity
。
我刚开始使用Dagger并尝试使用dagger2进行DI,但看起来它给我的活动注入了一个空演示器。下面是我的代码。 公共类TasksActivity扩展AppCompatActivity{
我创建了提供应用程序上下文的模块,我希望在模型层获得上下文。 我在Presenter层注入上下文,它使用,但是当我移到模型层时,Dagger在变量上注入一个值。 注入 主模块
本文向大家介绍Dagger2 Android依赖注入学习笔记,包括了Dagger2 Android依赖注入学习笔记的使用技巧和注意事项,需要的朋友参考一下 前言 最近在用 MVP + RxJava + Retrofit 写项目,觉得相对于其他的开发框架,这的确是给我们带来了很多方便,但是在网上搜寻相关资料的时候,总是能看到 MVP + RxJava + Retrofit + Dagger 这样的搭
这三个函数的返回类型提示有什么不同吗? 他们都应该有< code>- 提问的动机是这个问题,这个很好的答案,以及我正在学习类型提示的事实。
我试图将一组房间组件注入存储库,存储库本身使用Dagger2注入ViewModel(在片段中)。 代码如下。 片段: 视图模型: 我的存储库: 最后,对于我的匕首类,我有两个模块: 和我的AppComponent: Dagger编译正常,我可以访问并构建它。但是是不可访问的(检查类将其显示为私有),我需要实际注入依赖项的方法也是如此。结果我得到错误: 我该如何解决这个问题?
嗨,当我尝试在下面的类中注入Doa接口时,我正在使用mvvm和dagger2 我的接口类