11

I've created AbstractActivity and an AbstractFormActivity to rid of some boilerplate code, their content may be irrelevant to the question, but I will post it anyway, maybe I misunterstood something so, there they are:

public abstract class AbstractActivity extends ActionBarActivity {

    protected ObjectGraph graph;

    @Inject
    public Bus bus;

    @Inject
    public App app;

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(getLayout());
        setupInjection();
    }

    public void setupInjection() {
        graph = ((App) getApplication()).createScopedGraph(getModule());
        graph.inject(this);
        bus.register(this);
        ButterKnife.inject(this);
    }

    protected abstract Object getModule();
    protected abstract int getLayout();
}

and

public abstract class AbstractFormActivity<T extends EntidadeBase> extends AbstractActivity implements Form<T> {

    protected T entity;
    protected Map<View, Boolean> formValidations;
    protected AbstractFormActivity() {
       formValidations = new HashMap<View, Boolean>();
    }

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
    }

    protected boolean passedValidations() {
        for (View key : formValidations.keySet()) {
            if (!formValidations.get(key)) {
                return false;
            }
        }
        return true;
    }

    protected void validateAndSolidify() {
        if (passedValidations()) {
            solidify();
        }
        entity = null;
    }

    @Override
    public void validateMoreComplexFields() {
    }
}

finally I've created an Implementation of those mother Activities:

public class MercadoriaFormActivity extends AbstractFormActivity<Mercadoria> {

...

   @Override
   public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
    }

...

}

My problem is that the onCreate method is not called.

Any help is highly appreciated.

aboger
  • 2,214
  • 6
  • 33
  • 47
Marcos J.C Kichel
  • 6,887
  • 8
  • 38
  • 78

2 Answers2

42

onCreate() version you are currently using is added in Android 21. You should use version below instead:

protected void onCreate (Bundle savedInstanceState)
questioner
  • 2,283
  • 3
  • 26
  • 35
  • Helped a lot. Thank you for opening eyes :) I added onCreate in a fast manner and didn't notice I added the one from API 21. Thanks a lot! :) – Jack Lynx Jan 12 '17 at 20:34
1

I have also faced the same issue. After a couple of hours, I found my mistake, instead on (savedInstanceState: Bundle, persistentState: PersistableBundle) function has to override the below one.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}
Bharat Lalwani
  • 1,277
  • 15
  • 17