@RequiresPresenter(MainPresenter.class) public class MainActivity extends NucleusActivity<MainPresenter> {
/** * This method returns a {@link ReflectionPresenterFactory} instance if a given view class has * a {@link RequiresPresenter} annotation, or null otherwise. * * @param viewClass a class of the view * @param <P> a type of the presenter * @return a {@link ReflectionPresenterFactory} instance that is supposed to create a presenter from {@link RequiresPresenter} annotation. */ @Nullable public static <P extends Presenter> ReflectionPresenterFactory<P> fromViewClass(Class<?> viewClass) { RequiresPresenter annotation = viewClass.getAnnotation(RequiresPresenter.class); //noinspection unchecked Class<P> presenterClass = annotation == null ? null : (Class<P>)annotation.value(); return presenterClass == null ? null : new ReflectionPresenterFactory<>(presenterClass); }
@RequiresPresenter(LoggingPresenter.class) public class ItemFragment extends LoggingFragment<MainPresenter> {
@RequiresPresenter(MainPresenter.class) public class MainFragment extends LoggingFragment<MainPresenter> {
@RequiresPresenter(ItemPresenter.class) public class ItemFragment extends BaseFragment<ItemPresenter> {
@RequiresPresenter(TestPresenter.class) public static class TestView extends NucleusActivity { @Override protected void onDestroy() { super.onDestroy(); } }
@RequiresPresenter(TestPresenter.class) public static class TestView extends NucleusLayout { public TestView() { super(null); } @Override public boolean isInEditMode() { return false; } }
@RequiresPresenter(TestPresenter.class) public static class ViewWithPresenter extends Presenter { }
@RequiresPresenter(TestPresenter.class) public static class TestView extends NucleusFragment { }
@RequiresPresenter(MainPresenter.class) public class MainFragment extends BaseFragment<MainPresenter> {