diff --git a/AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/annotations/EFragment.java b/AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/annotations/EFragment.java index f0d7cc029a..67cf4cb997 100644 --- a/AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/annotations/EFragment.java +++ b/AndroidAnnotations/androidannotations-api/src/main/java/org/androidannotations/annotations/EFragment.java @@ -105,5 +105,7 @@ public @interface EFragment { int value() default ResId.DEFAULT_VALUE; + boolean forceLayoutInjection() default false; + String resName() default ""; } diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/EFragmentHandler.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/EFragmentHandler.java index 08444366b6..b47b458734 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/EFragmentHandler.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/handler/EFragmentHandler.java @@ -74,9 +74,16 @@ public void process(Element element, EFragmentHolder holder) { JFieldVar contentView = holder.getContentView(); - block._if(contentView.eq(_null())) // - ._then() // - .assign(contentView, inflater.invoke("inflate").arg(contentViewId).arg(container).arg(FALSE)); + boolean forceInjection = element.getAnnotation(EFragment.class).forceLayoutInjection(); + + if (!forceInjection) { + block._if(contentView.eq(_null())) // + ._then() // + .assign(contentView, inflater.invoke("inflate").arg(contentViewId).arg(container).arg(FALSE)); + } else { + block.assign(contentView, inflater.invoke("inflate").arg(contentViewId).arg(container).arg(FALSE)); + } + } } diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/EFragmentHolder.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/EFragmentHolder.java index cb4c37fd86..c466fc8c0b 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/EFragmentHolder.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/holder/EFragmentHolder.java @@ -27,6 +27,7 @@ import com.sun.codemodel.JMod; import com.sun.codemodel.JTypeVar; import com.sun.codemodel.JVar; +import org.androidannotations.annotations.EFragment; import org.androidannotations.helper.ActionBarSherlockHelper; import org.androidannotations.helper.AnnotationHelper; import org.androidannotations.process.ProcessHolder; @@ -247,8 +248,12 @@ private void setOnCreateView() { JVar savedInstanceState = onCreateView.param(classes().BUNDLE, "savedInstanceState"); + boolean forceInjection = getAnnotatedElement().getAnnotation(EFragment.class).forceLayoutInjection(); + JBlock body = onCreateView.body(); - body.assign(contentView, _super().invoke(onCreateView).arg(inflater).arg(container).arg(savedInstanceState)); + + if (!forceInjection) + body.assign(contentView, _super().invoke(onCreateView).arg(inflater).arg(container).arg(savedInstanceState)); setContentViewBlock = body.block();