package com.sora.util.akatsuki;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import com.sora.util.akatsuki.Internal.ClassArgBuilder;
public class FragmentConcludingBuilder<T> extends ClassArgBuilder<T> {
public FragmentConcludingBuilder(Bundle bundle, Class<? super T> targetClass) {
super(bundle, targetClass);
}
// TODO consider letting the processor generate the instantiation
// statement for us, Fragment.instantiate uses reflection internally
// which is somewhat bad
@SuppressWarnings("unchecked")
public T build(Context context) {
Class<? super T> targetClass = targetClass();
if (Fragment.class.isAssignableFrom(targetClass))
return (T) Fragment.instantiate(context, targetClass.getName(), bundle);
else if (android.support.v4.app.Fragment.class.isAssignableFrom(targetClass)) {
return (T) android.support.v4.app.Fragment.instantiate(context,
targetClass.getName(), bundle);
} else {
throw new AssertionError("Target class of " + targetClass
+ " is neither android.app.Fragment or android.support.v4.app.Fragment, "
+ "this error should have been caught by the processor and should not happen");
}
}
public Bundle buildArgs() {
return bundle;
}
}