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

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

There is a newer version: 1.6.8
Show newest version

package org.holoeverywhere.app;

import java.util.List;

import org.holoeverywhere.LayoutInflater;
import org.holoeverywhere.addon.IAddon;
import org.holoeverywhere.addon.IAddonAttacher;
import org.holoeverywhere.addon.IAddonBasicAttacher;
import org.holoeverywhere.addon.IAddonFragment;

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

import com.actionbarsherlock.view.ActionMode;
import com.actionbarsherlock.view.ActionMode.Callback;

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 IAddonAttacher mAttacher =
            new IAddonBasicAttacher(this);

    private LayoutInflater mLayoutInflater;

    @Override
    public  T addon(Class clazz) {
        return mAttacher.addon(clazz);
    }

    @Override
    public void addon(List> classes) {
        mAttacher.addon(classes);
    }

    @Override
    public  T addon(String classname) {
        return mAttacher.addon(classname);
    }

    @Override
    public LayoutInflater getLayoutInflater() {
        if (mLayoutInflater == null) {
            mLayoutInflater = getSupportActivity().getLayoutInflater().
                    obtainFragmentChildInflater(this);
        }
        return mLayoutInflater;
    }

    @Override
    public boolean isAddonAttached(Class clazz) {
        return mAttacher.isAddonAttached(clazz);
    }

    @Override
    public void lockAttaching() {
        mAttacher.lockAttaching();
    }

    @Override
    public List> obtainAddonsList() {
        return mAttacher.obtainAddonsList();
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        addon(activity.obtainAddonsList());
    }

    @Override
    public void onCreate(final Bundle savedInstanceState) {
        lockAttaching();
        performAddonAction(new AddonCallback() {
            @Override
            public void justAction(IAddonFragment addon) {
                addon.onPreCreate(savedInstanceState);
            }
        });
        super.onCreate(savedInstanceState);
        performAddonAction(new AddonCallback() {
            @Override
            public void justAction(IAddonFragment addon) {
                addon.onCreate(savedInstanceState);
            }
        });
    }

    @SuppressWarnings("unchecked")
    @Override
    public void onDetach() {
        ((IAddonBasicAttacher) mAttacher).reset();
        super.onDetach();
    }

    @Override
    public void onViewCreated(final View view) {
        super.onViewCreated(view);
        performAddonAction(new AddonCallback() {
            @Override
            public void justAction(IAddonFragment addon) {
                addon.onViewCreated(view);
            }
        });
    }

    @Override
    public boolean performAddonAction(AddonCallback callback) {
        return mAttacher.performAddonAction(callback);
    }

    @Override
    public ActionMode startActionMode(Callback callback) {
        return getSupportActivity().startActionMode(callback);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy