package com.jdroid.android.listener; import java.io.Serializable; import android.app.Activity; import android.view.View; import android.view.View.OnClickListener; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.activity.ActivityLauncher; /** * {@link OnClickListener} that launches an {@link Activity} on the onClick event */ public class LaunchOnClickListener implements OnClickListener { private Class<? extends Activity> targetActivityClass; private String extraName; private Serializable extraValue; private Integer requestCode; /** * Launches the {@link AbstractApplication#getHomeActivityClass()} on the onClick event */ public LaunchOnClickListener() { this(null); } /** * @param targetActivityClass The {@link Activity} {@link Class} to launch on the onClick event */ public LaunchOnClickListener(Class<? extends Activity> targetActivityClass) { this.targetActivityClass = targetActivityClass; } /** * @param targetActivityClass The {@link Activity} {@link Class} to launch on the onClick event * @param extraName The extra name * @param extraValue The extra value */ public LaunchOnClickListener(Class<? extends Activity> targetActivityClass, String extraName, Serializable extraValue) { this.targetActivityClass = targetActivityClass; this.extraName = extraName; this.extraValue = extraValue; } /** * @param targetActivityClass The {@link Activity} {@link Class} to launch on the onClick event * @param extraName The extra name * @param extraValue The extra value * @param requestCode The request code for the activity to start for result */ public LaunchOnClickListener(Class<? extends Activity> targetActivityClass, String extraName, Serializable extraValue, int requestCode) { this(targetActivityClass, extraName, extraValue); this.requestCode = requestCode; } /** * @param targetActivityClass The {@link Activity} {@link Class} to launch on the onClick event * @param requestCode The request code for the activity to start for result */ public LaunchOnClickListener(Class<? extends Activity> targetActivityClass, int requestCode) { this(targetActivityClass); this.requestCode = requestCode; } /** * @see android.view.View.OnClickListener#onClick(android.view.View) */ @Override public void onClick(View v) { if (targetActivityClass == null) { ActivityLauncher.launchHomeActivity(); } else if (extraName != null) { if (requestCode != null) { ActivityLauncher.launchActivity(targetActivityClass, extraName, extraValue, requestCode); } else { ActivityLauncher.launchActivity(targetActivityClass, extraName, extraValue); } } else { if (requestCode != null) { ActivityLauncher.launchActivity(targetActivityClass, requestCode); } else { ActivityLauncher.launchActivity(targetActivityClass); } } } }