Reputation: 39519
i am having trouble with android-annotations and inheritance:
@EFragment(R.layout.fragment_foo)
public class TestBaseFragment {
@AfterViews
public void afterTestBaseFragmentViews() {
}
}
@EFragment(R.layout.fragment_foo)
public class TestFragment extends TestBaseFragment {
@AfterViews
public void afterTestFragmentViews() {
}
}
generates:
public final class TestFragment_
extends TestFragment
{
...
private void afterSetContentView_() {
afterTestFragmentViews();
afterTestBaseFragmentViews();
}
...
how can I make sure that afterTestBaseFragmentViews() is called before afterTestFragmentViews() ? Or can you point me to any document which describes how to do inheritance with AndroidAnnotations?
Upvotes: 8
Views: 3346
Reputation: 11422
It's just some sort of workaround
Using an abstract class:
@EFragment(R.layout.fragment_foo)
public abstract class TestBaseFragment {
@AfterViews
protected void afterTestBaseFragmentViews() {
// do something
afterView();
}
protected abstract void afterView();
}
@EFragment(R.layout.fragment_foo)
public class TestFragment extends TestBaseFragment {
@Override
protected void afterView() {
// do something after BaseFragment did something
}
}
Using simple subclassing:
@EFragment(R.layout.fragment_foo)
public class TestBaseFragment {
@AfterViews
protected void afterTestBaseFragmentViews() {
afterView();
}
public void afterView() {
// do something
}
}
@EFragment(R.layout.fragment_foo)
public class TestFragment extends TestBaseFragment {
@Override
public void afterView() {
super.afterView();
// do something after BaseFragment did something
}
}
I hope this is what you were looking for. (Not tested - just written in notepad)
Upvotes: 11