Skip to content

Instantly share code, notes, and snippets.

@duncandee
Created August 5, 2013 05:50
Show Gist options
  • Select an option

  • Save duncandee/6153762 to your computer and use it in GitHub Desktop.

Select an option

Save duncandee/6153762 to your computer and use it in GitHub Desktop.

Revisions

  1. duncandee created this gist Aug 5, 2013.
    122 changes: 122 additions & 0 deletions RoboActionBarActivity.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,122 @@
    public class RoboActionBarActivity extends ActionBarActivity implements RoboContext {

    protected EventManager eventManager;
    protected HashMap<Key<?>, Object> scopedObjects = new HashMap<Key<?>, Object>();

    @Inject
    ContentViewListener ignored; // BUG find a better place to put this

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    final RoboInjector injector = RoboGuice.getInjector(this);
    eventManager = injector.getInstance(EventManager.class);
    injector.injectMembersWithoutViews(this);
    super.onCreate(savedInstanceState);
    eventManager.fire(new OnCreateEvent(savedInstanceState));
    }

    @Override
    public void setContentView(int layoutResID) {
    super.setContentView(layoutResID);
    contentViewChanged();
    }

    @Override
    public void setContentView(View view) {
    super.setContentView(view);
    contentViewChanged();
    }

    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params) {
    super.setContentView(view, params);
    contentViewChanged();
    }

    @Override
    public void addContentView(View view, ViewGroup.LayoutParams params) {
    super.addContentView(view, params);
    contentViewChanged();
    }

    private void contentViewChanged() {
    RoboGuice.getInjector(this).injectViewMembers(this);
    eventManager.fire(new OnContentChangedEvent());
    }

    @Override
    protected void onRestart() {
    super.onRestart();
    eventManager.fire(new OnRestartEvent());
    }

    @Override
    protected void onStart() {
    super.onStart();
    eventManager.fire(new OnStartEvent());
    }

    @Override
    protected void onResume() {
    super.onResume();
    eventManager.fire(new OnResumeEvent());
    }

    @Override
    protected void onPause() {
    super.onPause();
    eventManager.fire(new OnPauseEvent());
    }

    @Override
    protected void onNewIntent( Intent intent ) {
    super.onNewIntent(intent);
    eventManager.fire(new OnNewIntentEvent());
    }

    @Override
    protected void onStop() {
    try {
    eventManager.fire(new OnStopEvent());
    } finally {
    super.onStop();
    }
    }

    @Override
    protected void onDestroy() {
    try {
    eventManager.fire(new OnDestroyEvent());
    } finally {
    try {
    RoboGuice.destroyInjector(this);
    } finally {
    super.onDestroy();
    }
    }
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
    final Configuration currentConfig = getResources().getConfiguration();
    super.onConfigurationChanged(newConfig);
    eventManager.fire(new OnConfigurationChangedEvent(currentConfig, newConfig));
    }

    @Override
    public void onContentChanged() {
    super.onContentChanged();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    eventManager.fire(new OnActivityResultEvent(requestCode, resultCode, data));
    }

    @Override
    public Map<Key<?>, Object> getScopedObjectMap() {
    return scopedObjects;
    }

    }