lig*_*igi 8 android android-annotations
我遇到了android-annotations和继承问题:
@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() {
}
}
Run Code Online (Sandbox Code Playgroud)
产生:
public final class TestFragment_
extends TestFragment
{
...
private void afterSetContentView_() {
afterTestFragmentViews();
afterTestBaseFragmentViews();
}
...
Run Code Online (Sandbox Code Playgroud)
如何在afterTestFragmentViews()之前确保调用afterTestBaseFragmentViews()?或者您可以指出任何描述如何使用AndroidAnnotations进行继承的文档吗?
Bas*_*der 11
这只是某种解决方法
使用抽象类:
@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
}
}
Run Code Online (Sandbox Code Playgroud)
使用简单的子类化:
@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
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这就是你要找的东西.(未经测试 - 只是用记事本写的)