Fragment的Tag

2024-06-04 10:18
文章标签 fragment tag

本文主要是介绍Fragment的Tag,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

android.app.FragmentManager.findFragmentByTag(String tag)


使用Fragment,先获取其实例,通过tag找到内存中的实例,如果取到null,再初始化实例。那么tag怎么获取?

1、

android.app. FragmentTransaction.replace( int containerViewId, Fragment fragment, String tag)

的时候用户指定tag,

如:

        FragmentManager manager = getChildFragmentManager();//嵌套Fragment需要getChildFragmentManager
        if (manager != null) {
            // Add default fragments to view. Try to reuse old fragments or create new ones
            FragmentTransaction transaction = manager.beginTransaction();
            AnalogClockFragment mClockFragment = (AnalogClockFragment) manager
                    .findFragmentByTag("AnalogClockFragment");
            if (mClockFragment == null) {
                mClockFragment = new AnalogClockFragment();//子Fragment实例
                transaction.replace(R.id.clock_frame, mClockFragment, "AnalogClockFragment");//tag   AnalogClockFragment
            } else {
                transaction.show(mClockFragment);
            }
            transaction.commit();

}


2、Fragment实例化的时候Android系统会给Fragment对象一个默认的tag

查看源代码 android.support.v4.app.FragmentPagerAdapter

private String getFragmentTag(int position){
//看源代码 android.support.v4.app.FragmentPagerAdapter
return "android:switcher:"+R.id.pager+":"+position;
}

然后根据tag获取fragment对象

getActivity().getFragmentManager().findFragmentByTag(getFragmentTag(position));

这里的position是:如果有多个fragment,position是其顺序号,从0开始,0、1、2。。。

这里的R.id.pager是:fragment所在View容器控件id

这篇关于Fragment的Tag的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029803

相关文章

Mybatis提示Tag name expected的问题及解决

《Mybatis提示Tagnameexpected的问题及解决》MyBatis是一个开源的Java持久层框架,用于将Java对象与数据库表进行映射,它提供了一种简单、灵活的方式来访问数据库,同时也... 目录概念说明MyBATis特点发现问题解决问题第一种方式第二种方式问题总结概念说明MyBatis(原名

Android set Tag, findViewWithTag使用

设置了tag为“principal”的view ImageView principal = (ImageView) findViewById(R.id.imagen_home_0);principal.setTag("principal"); 在其它地方获取,获取已经设置了tag为“principal”的view LayoutInflater inflater = LayoutInflate

ViewPager+fragment实现切换页面(一)

如今的很多应用中都是下面有一排按钮,点击可以切换页面,滑动也可以切换页面。下面就来简单的实现这个功能。 思路 首先肯定是会用到viewpager这个控件,为了能够向下兼容,最好用v4包下的viewpager,Activity要继承FragmentActivity 其次用一个集合来存储所有的fragment页面在设置viewpager的适配器时,把存储fragment页面的list集合传入ada

安卓中的fragment与viewPager的使用问题的解决

最近使用viewPager,结合fragment使用,发现fragment的周期将不符合他的原有的周期流程,多个fragment将会产生错位问题。       通过研究相关代码,发现fragment的切换实际调用的函数为setUserVisibleHint,通过在其中重写方法,将会达到fragment正确切换的效果。       public void setUserVisible

Activity被回收导致其内部的Fragment

方式一:   MainActivity重写onSaveInstanceState方法,将super.onSaveInstanceState(outState);注释掉,让其不再保存Fragment的状态,达到其随着MainActivity一起被回收的效果! 方式二: @Overrideprotected void onSaveInstanceState(Bundle outSta

Android - 总结Activity与Fragment打开的时候获取组件的大小

Activity中获取 组件大小        代码: @Overridepublic void onWindowFocusChanged(boolean hasFocus) {// TODO Auto-generated method stubsuper.onWindowFocusChanged(hasFocus);Log.d("TAG", "A-button1-->"+button1);L

fragment懒加载问题

public class LazyBaseFragment extends BasePermissionFragment {private boolean mHasLoadedOnce = false;//子类重写该方法 进行懒加载public void onLazyLoad() {}private boolean isLazy;/** * 请用viewPager第1个fragment

Android基础——Fragment详解

文章目录 1 Fragment的产生与介绍1.1 Fragment的生命周期1.2 Fragment的生命周期分析 2 Fragment的使用2.1 静态使用Fragment2.2动态使用Fragment 3 Fragment的管理3.1 FragmentManager3.2 FragmentTransaction3.3 Fragment间传递参数 1 Fragment的产生与介

android面试:Fragment 和 Activity 有什么区别?它们之间又有什么关系?

在Android开发中,Fragment和Activity是两个重要的组件,它们各自有不同的特性和用途。 区别 定义: Activity:是一个用户界面组件,代表一个单一的屏幕,用户可以与之交互。每个Activity都有自己的生命周期。Fragment:是一个可重用的UI组件,通常是Activity的一部分。Fragment可以在Activity中嵌套和组合,允许更灵活的UI设计。 生命周

Android 动态更新Viewpager+fragment完美解决方案

最近遇到个问题,一直没有找到很好的解决方案,今天终于解决了。 Viewpager嵌套多个Fragment 现在我要改变fragment中的数据。 这个非常的简单,网上有很多答案都能解决。 改变Viewpager的数量,也就是说我要动态的增加或者删除Viewpager的页面数量。 这个就非常操蛋了。 查遍资料,才找到解决办法。写下来备忘。 从FragmentPagerAdapter的运行机制