Я пытаюсь создать первое приложение для Android с кинжалом. Я прочитал несколько уроков, и теперь я пытаюсь заставить его работать. Проблема заключается в том, когда я называю settings.get() в MainActivity, я получаюDagger 2 Android не вводит поле
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object javax.inject.Provider.get()' on a null object reference
at biz.golek.whattodofordinner.MainActivity.onOptionsItemSelected(MainActivity.java:57)
который: settings.get() Run();.
Я создал:
MainActivity:
public class MainActivity extends AppCompatActivity {
@Inject
Provider<ShowSettingsController> settings;
/.../
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
settings.get().Run();
return true;
}
return super.onOptionsItemSelected(item);
}
}
App:
public class WhatToDoForDinnerApp extends com.orm.SugarApp {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityInjector());
}
}
ActivityInjector:
public class ActivityInjector implements Application.ActivityLifecycleCallbacks {
private ApplicationComponent component;
public ActivityInjector(){
this.component = DaggerApplicationComponent.builder()
.settingsModule(new SettingsModule())
.build();
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
component.inject(activity);
}
/.../
}
ApplicationComponent:
@Singleton
@Component(modules = { SettingsModule.class })
public interface ApplicationComponent {
void inject(Activity activity);
}
И SettingsModule:
@Module
public class SettingsModule {
@Provides
@Singleton
static ShowSettingsController provideShowSettingsController(){
return new ShowSettingsControllerImpl();
}
/.../
}
Весь код на моем GitHub по адресу: whattodofordinner идеи ПБЯ, что я неправильно? Спасибо заранее.
Я просто изучаю кинжал 2, но, думаю, вам нужен компонент для вашего модуля настроек. Этот урок помог мне: https://blog.gouline.net/2015/05/04/dagger-2-even-sharper-less-square/ – dazza5000