Best practice: Extending or overriding an Android library project class

前端 未结 7 1687
春和景丽
春和景丽 2020-12-04 15:31

We\'re using an Android Library Project to share core classes and resources across different builds (targets) of our Android application. The Android projects for each speci

相关标签:
7条回答
  • 2020-12-04 16:28

    I was inspired by PoinsoneR's answer to create a Utility class to do the same thing for Fragments - override a fragment in an android Library. The steps are similar to his answer so I won't go into great detail, but here is the class:

    package com.mysweetapp.utilities;
    
    import android.support.v4.app.Fragment;
    
    public class FragmentUtilities 
    {
        private static Class getFragmentClass(Class clazz) 
        {
            // Check for extended fragment
            String extClassName = clazz.getName() + "Extended";
            try 
            {
                Class extClass = Class.forName(extClassName);
                return extClass;
            } 
            catch (ClassNotFoundException e) 
            {
                e.printStackTrace();
                // Extended class is not found return base
                return clazz;
            }
        }
    
        public static Fragment getFragment(Class clazz) 
        {
            Class fragmentClass = getFragmentClass(clazz);
    
            Fragment toRet = null;
    
            try 
            {
                toRet = (Fragment)fragmentClass.newInstance();
    
                return toRet;
            } 
            catch (InstantiationException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            catch (IllegalAccessException e) 
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            return toRet;
        }
    }
    

    Usage:

    FragmentUtilities.getFragment(MySpecialFragment.class)
    
    0 讨论(0)
提交回复
热议问题