All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.holoeverywhere.app.Fragment Maven / Gradle / Ivy


package org.holoeverywhere.app;

import java.util.ArrayList;
import java.util.List;

import org.holoeverywhere.addon.Sherlock;
import org.holoeverywhere.addon.Sherlock.SherlockF;
import org.holoeverywhere.addons.IAddon;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app._HoloFragment;

public class Fragment extends _HoloFragment {
    public static  T instantiate(Class clazz) {
        return instantiate(clazz, null);
    }

    public static  T instantiate(Class clazz, Bundle args) {
        try {
            T fragment = clazz.newInstance();
            if (args != null) {
                args.setClassLoader(clazz.getClassLoader());
                fragment.setArguments(args);
            }
            return fragment;
        } catch (Exception e) {
            throw new InstantiationException("Unable to instantiate fragment " + clazz
                    + ": make sure class name exists, is public, and has an"
                    + " empty constructor that is public", e);
        }
    }

    @Deprecated
    public static Fragment instantiate(Context context, String fname) {
        return instantiate(context, fname, null);
    }

    @SuppressWarnings("unchecked")
    @Deprecated
    public static Fragment instantiate(Context context, String fname, Bundle args) {
        try {
            return instantiate((Class) Class.forName(fname, true,
                    context.getClassLoader()), args);
        } catch (Exception e) {
            throw new InstantiationException("Unable to instantiate fragment " + fname
                    + ": make sure class name exists, is public, and has an"
                    + " empty constructor that is public", e);
        }
    }

    private final List> addons = new ArrayList>();

    public void attachAddon(IAddon addon) {
        if (!addons.contains(addon)) {
            addons.add(addon);
        }
    }

    public void detachAddon(IAddon addon) {
        addons.remove(addon);
    }

    @SuppressWarnings("unchecked")
    public > T findAddon(Class clazz) {
        for (IAddon addon : addons) {
            if (addon.getClass().isAssignableFrom(clazz)) {
                return (T) addon;
            }
        }
        return null;
    }

    @Deprecated
    public Activity getSherlockActivity() {
        return (Activity) getActivity();
    }

    public > T requireAddon(Class clazz) {
        T t = findAddon(clazz);
        if (t == null) {
            try {
                t = clazz.newInstance();
                t.addon(this);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return t;
    }

    public SherlockF requireSherlock() {
        return requireAddon(Sherlock.class).fragment(this);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy