package com.thefinestartist.builders; import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.thefinestartist.Base; import com.thefinestartist.utils.content.ContextUtil; import java.io.Serializable; import java.util.ArrayList; /** * ActivityBuilder helps to build {@link Activity} {@link Intent} and start {@link Activity}. * * @author Leonardo Taehwan Kim */ public class ActivityBuilder { final Intent intent; public <C extends Activity> ActivityBuilder(@NonNull Class<C> clazz) { intent = new Intent(Base.getContext(), clazz); } public <T extends Serializable> ActivityBuilder set(@NonNull String key, T value) { intent.putExtra(key, value); return this; } public ActivityBuilder set(@NonNull String key, Parcelable value) { intent.putExtra(key, value); return this; } public ActivityBuilder set(@NonNull String key, Parcelable[] value) { intent.putExtra(key, value); return this; } public <T extends Parcelable> ActivityBuilder set(@NonNull String key, ArrayList<T> value) { intent.putExtra(key, value); return this; } public ActivityBuilder remove(@NonNull String key) { intent.removeExtra(key); return this; } public ActivityBuilder setFlags(int flags) { intent.setFlags(flags); return this; } public ActivityBuilder addFlags(int flags) { intent.addFlags(flags); return this; } public Intent buildIntent() { return intent; } public void start() { ContextUtil.startActivity(intent); } public void startForResult(@NonNull Activity activity, int requestCode) { activity.startActivityForResult(intent, requestCode); } @TargetApi(16) public void startForResult(@NonNull Activity activity, int requestCode, @Nullable Bundle options) { activity.startActivityForResult(intent, requestCode, options); } }