package org.wheelmap.android.utils; import android.os.Bundle; import android.os.Parcelable; /** * arguments which can be used to pass values to an activity or fragment * use {@link com.google.auto.value.AutoValue} to generate Parcelable implementation */ public abstract class Arguments implements Parcelable { public static final String KEY_ARGUMENTS = "Arguments"; public static final String KEY_TYPE = "Type"; public Bundle toBundle() { Bundle b = new Bundle(); addToBundle(b); return b; } public static <T extends Arguments> T fromBundle(Bundle b) { if (b == null) { return null; } return b.getParcelable(KEY_ARGUMENTS); } public void addToBundle(Bundle b) { b.putParcelable(KEY_ARGUMENTS, this); b.putString(KEY_TYPE, this.getClass().getCanonicalName()); } public static void removeArguments(Bundle b) { if (b == null) { return; } b.remove(KEY_ARGUMENTS); } public static boolean isInstanceOf(Class compareClass, Bundle b){ if (b == null || compareClass == null) { return false; } return compareClass.getCanonicalName().equals(b.getString(KEY_TYPE)); } }