Я пытаюсь добавить Dagger 2 в свой Android-проект. Мое приложение имеет следующий экранDagger 2 presenter injection return null
- Войти расширяет базовую активность
- навигации активность расширяет основной активности,
- MW активность экстентов Навигационная активность
Presenter Injection работает отлично Войти и навигационную деятельность, где, как в MW деятельности он возвращает null
Butter Knife также не работает в 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();
}
}
MW активность
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();
}
}
Logcat: неустранимые: Основной процесс: com.abc.xyz, ПИД: 21542
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);
}
Укажите свой компонент, где вы Habe вашей 'инъекционной (активность)' метода –
@DavidMedenjak Я обновил свое описание, пожалуйста, проверьте – Rahul
@DavidMedenjak даже масло нож не работает в MWActivity деятельности – Rahul