Я новичок в Отто, и у меня возникли серьезные проблемы с его функционированием вместе с инжектором зависимостей кинжала и JobManager. Всякий раз, когда я запускаю мое приложение, я получаю то же сообщение об ошибке:NullPointerException с Отто и кинжалом
"java.lang.RuntimeException: Unable to resume activity {sdos.juanjosemelero.pruebaormlite2/sdos.juanjosemelero.pruebaormlite2.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.squareup.otto.Bus.register(java.lang.Object)' on a null object reference"
[...]
"Caused by java.lang.NullPointerException:
Attempt to invoke virtual method 'void com.squareup.otto.Bus.register(java.lang.Object)' on a null object reference".
Линия она reffers это одна:
bus.register(this);
Это моя активность:
public class MainActivity extends ActionBarActivity {
@Inject Bus bus;
@Override
protected void onResume() {
super.onResume();
bus.register(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
bus.unregister(this);
}
}
И здесь мой модуль для инъекций кинжала:
@Module(
injects = {MainActivity.class},
library = true
)
public class MyModule {
private final MyApplication application;
public MyModule (MyApplication application) {
this.application = application;
}
@Provides
@Singleton
MyApplication provideMyApplication() {
return application;
}
@Provides
@Singleton
public Bus provideBus(){
return new Bus(ThreadEnforcer.ANY);
}
}
И класс MyApplication в случае, интересно взглянуть на него:
public class MyApplication extends Application {
private ObjectGraph objectGraph;
private static MyApplication application;
//Constructor
public MyApplication() {
application = this;
}
@Override
public void onCreate() {
super.onCreate();
buildObjectGraph();
}
public void buildObjectGraph() {
objectGraph = ObjectGraph.create(new MyModule(this));
}
public void inject(Object o) {
objectGraph.inject(o);
}
public static MyApplication get() {
return application;
}
}
Могу ли я предположить, чтобы инициализировать MainActivity каким-то образом?
Кроме того, вы не регистрируетесь на своем автобусе, что может вызвать проблемы позже. – EpicPandaForce
Да, я, но я не копировал этот фрагмент кода. Большое вам спасибо :) Однако я до сих пор не понимаю, почему мне нужно добавить эту строку. Что я сделал, добавив это? –
Это заставляет кинжал вставлять вашу MainActivity с материалом, который вы указали с помощью '@ Inject'. – EpicPandaForce