三种方法

第一种:静态fragment

如果是在layout文件中定义的fragment,则使用

getSupportFragmentManager().findFragmentById();

第二种:动态fragment

如果还在程序中代码变更了fragment,则使用

getSupportFragmentManager().findFragmentByTag();

第三种:使用ViewPager装载的fragment

如果使用ViewPager装载fragment时,则需要修改Adapter

  • 定义SmartFragmentStatePagerAdapter.java
import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentStatePagerAdapter;import android.util.SparseArray;import android.view.ViewGroup;/* Extension of FragmentStatePagerAdapter which intelligently caches all active fragments and manages the fragment lifecycles. Usage involves extending from SmartFragmentStatePagerAdapter as you would any other PagerAdapter.*/public abstract class SmartFragmentStatePagerAdapter extends FragmentStatePagerAdapter {    // Sparse array to keep track of registered fragments in memory    private SparseArray registeredFragments = new SparseArray();    public SmartFragmentStatePagerAdapter(FragmentManager fragmentManager) {        super(fragmentManager);    }    // Register the fragment when the item is instantiated    @Override    public Object instantiateItem(ViewGroup container, int position) {        Fragment fragment = (Fragment) super.instantiateItem(container, position);        registeredFragments.put(position, fragment);        return fragment;    }    // Unregister when the item is inactive    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        registeredFragments.remove(position);        super.destroyItem(container, position, object);    }    // Returns the fragment for the position (if instantiated)    public Fragment getRegisteredFragment(int position) {        return registeredFragments.get(position);    }}
  • 将SectionsPagerAdapter继承于SmartFragmentStatePagerAdapter
/**     * A {@link FragmentPagerAdapter} that returns a fragment corresponding to     * one of the sections/tabs/pages.     */    public class SectionsPagerAdapter extends SmartFragmentStatePagerAdapter {        public SectionsPagerAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            // getItem is called to instantiate the fragment for the given page.            // Return a PlaceholderFragment (defined as a static inner class below).            switch (position) {                case 0:                    return Fragment1.newInstance(position);                case 1:                    return Fragment2.newInstance(position);                default:                    return null;            }        }        @Override        public int getCount() {            // Show 2 total pages.            return 2;        }        @Override        public CharSequence getPageTitle(int position) {            switch (position) {                case 0:                    return "SECTION 0";                case 1:                    return "SECTION 1";            }            return null;        }    }
  • 在onCreate()等中加入初始化代码
mSmartFragmentStatePagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());// Set up the ViewPager with the sections adapter.mViewPager = (ViewPager) findViewById(R.id.fragment_container);mViewPager.setAdapter(mSmartFragmentStatePagerAdapter);
  • 使用的时候只需下面的代码即可
((Fragment1) mSmartFragmentStatePagerAdapter.getRegisteredFragment(1));

更多相关文章

  1. Android(安卓)MediaScanner.cpp 源代码解析
  2. Android(安卓)Canvas的save()和restore()
  3. android入门小Demo
  4. android源代码下载及编译开发
  5. Android(安卓)ril原生代码(C/C++)和java代码部分分析
  6. Android(安卓)读取元素的数据
  7. Android中阻止AlertDialog关闭实例代码
  8. Android的应用程序组件---四大组件
  9. react-native 实现购物车滑动删除效果的示例代码

随机推荐

  1. Cisdem Duplicate Finder:快速查找和删除
  2. 基础篇--ES集群部署
  3. 基础篇--ES基础数据操作
  4. Kibana的安装及配置应用
  5. ELK收集Nginx日志
  6. rsync+inotify实现服务器的实时同步
  7. linux终端命令
  8. PyCharm激活码,亲测有效(支持最新PyCharm20
  9. sh nginx 虚拟主机安装卸载
  10. 从“会写程序的干不过会写PPT的”聊程序