/**
* Copyright (C) 2013 - 2015 the enviroCar community
*
* This file is part of the enviroCar app.
*
* The enviroCar app is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The enviroCar app is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with the enviroCar app. If not, see http://www.gnu.org/licenses/.
*/
package org.envirocar.core.injection;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import com.google.common.base.Preconditions;
import com.squareup.otto.Bus;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import dagger.ObjectGraph;
/**
* @author dewall
*/
public abstract class BaseInjectorActivity extends AppCompatActivity implements Injector,
InjectionModuleProvider {
private ObjectGraph mObjectGraph;
// Injected variables.
@Inject
protected Bus mBus;
@Override
protected void onCreate(Bundle savedInstanceState) {
mObjectGraph = ((Injector) getApplicationContext()).getObjectGraph().plus
(getInjectionModules().toArray());
super.onCreate(savedInstanceState);
// Inject all variables in this object.
injectObjects(this);
}
@Override
protected void onStart(){
super.onStart();
// Register on the bus.
mBus.register(this);
}
@Override
protected void onStop() {
super.onStop();
// Unregister from the bus.
mBus.unregister(this);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
super.onOptionsItemSelected(item);
return false;
}
@Override
public ObjectGraph getObjectGraph() {
return mObjectGraph;
}
@Override
public List<Object> getInjectionModules() {
return new ArrayList<>();
}
@Override
public void injectObjects(Object instance) {
Preconditions.checkNotNull(instance, "Cannot inject into Null objects.");
Preconditions.checkNotNull(mObjectGraph, "The ObjectGraph must be initialized before use.");
mObjectGraph.inject(instance);
}
}