当前位置: 首页 > news >正文

国税局网站里打印设置如何做网站制作推广电话

国税局网站里打印设置如何做,网站制作推广电话,uniapp怎么做淘客网站,企业网站发展趋势上一篇Android:FragmentTransaction我们大概介绍了FragmentManager的大致工作流程,知道了每个动作都会添加到Op队列里,并由FragmentTransaction进行管理,那么我们就来看看FragmentTransaction的具体内容。 首先FragmentTransacti…

上一篇Android:FragmentTransaction我们大概介绍了FragmentManager的大致工作流程,知道了每个动作都会添加到Op队列里,并由FragmentTransaction进行管理,那么我们就来看看FragmentTransaction的具体内容。

首先FragmentTransaction中定义了每个动作的常量值。

    static final int OP_NULL = 0;static final int OP_ADD = 1;static final int OP_REPLACE = 2;static final int OP_REMOVE = 3;static final int OP_HIDE = 4;static final int OP_SHOW = 5;static final int OP_DETACH = 6;static final int OP_ATTACH = 7;static final int OP_SET_PRIMARY_NAV = 8;static final int OP_UNSET_PRIMARY_NAV = 9;static final int OP_SET_MAX_LIFECYCLE = 10;

在这些值里面,我们看到了非常熟悉的一些操作,比如add,hide,replace等,每个动作都对应一个值。

有了值,就会为每个动作分配定义一个对象。内部类Op。

    static final class Op {//每个动作对应的命令数值int mCmd;//要操作的那个fragmentFragment mFragment;//进入动画int mEnterAnim;//退出时动画int mExitAnim;int mPopEnterAnim;int mPopExitAnim;//声明周期状态Lifecycle.State mOldMaxState;Lifecycle.State mCurrentMaxState;}

那每个动作是如何添加到事务的呢?当我们调用事务的add,hide,show等操作时,从前面文章知道:

        FragmentManager fragmentManager = getSupportFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();

这个transaction其实是BackStackRecord对象,所以会调用BackStackRecord中对应的方法,比如hide操作。

//BackStackRecord.javapublic FragmentTransaction hide(@NonNull Fragment fragment) {......//调用父类return super.hide(fragment);}//父类:FragmentTransaction.javapublic FragmentTransaction hide(@NonNull Fragment fragment) {addOp(new Op(OP_HIDE, fragment));return this;}

最终调用父类的addOp方法,创建了一个Op对象,并传入OP_HIDE值和要操作的Fragment对象,然后将其添加到mOps列表中。

    ArrayList<Op> mOps = new ArrayList<>();void addOp(Op op) {mOps.add(op);op.mEnterAnim = mEnterAnim;op.mExitAnim = mExitAnim;op.mPopEnterAnim = mPopEnterAnim;op.mPopExitAnim = mPopExitAnim;}

我们在添加fragment到事务时,add方法有两个重载方法。

transaction.add(f1,"f1");
transaction.add(R.id.layout_f,f1,"f1");

一个是不传容器id,一个需要传,第一个方法,其实就是调用第二个方法,然后id传0。

    public FragmentTransaction add(@NonNull Fragment fragment, @Nullable String tag)  {doAddOp(0, fragment, tag, OP_ADD);return this;}

对于第二个方法,我们来看看。

void doAddOp(int containerViewId, Fragment fragment, @Nullable String tag, int opcmd) {//反射final Class<?> fragmentClass = fragment.getClass();final int modifiers = fragmentClass.getModifiers();//检查fragment是否是匿名类,是不是public的,是不是静态类,是不是嵌套类等if (fragmentClass.isAnonymousClass() || !Modifier.isPublic(modifiers)|| (fragmentClass.isMemberClass() && !Modifier.isStatic(modifiers))) {throw new IllegalStateException("Fragment " + fragmentClass.getCanonicalName()+ " must be a public static class to be  properly recreated from"+ " instance state.");}//如果有标签tagif (tag != null) {//检查tag,不允许修改已经存在的tagif (fragment.mTag != null && !tag.equals(fragment.mTag)) {throw new IllegalStateException("Can't change tag of fragment "+ fragment + ": was " + fragment.mTag+ " now " + tag);}fragment.mTag = tag;}//如果设置里容器Idif (containerViewId != 0) {//如果没有为容器设置IDif (containerViewId == View.NO_ID) {throw new IllegalArgumentException("Can't add fragment "+ fragment + " with tag " + tag + " to container view with no id");}//如果fragment已经有容器Id了,不允许变更if (fragment.mFragmentId != 0 && fragment.mFragmentId != containerViewId) {throw new IllegalStateException("Can't change container ID of fragment "+ fragment + ": was " + fragment.mFragmentId+ " now " + containerViewId);}fragment.mContainerId = fragment.mFragmentId = containerViewId;}//添加Op到队列addOp(new FragmentTransaction.Op(opcmd, fragment));
}

代码做了注释,就不在具体描述了。

再来看attach和detach方法,detach会将fragment从UI界面移除,即使调用show也无法再次显示出来。调用attach后,fragment会重新显示在界面上。

        findViewById(R.id.tv_1).setOnClickListener((v -> {FragmentTransaction t = fragmentManager.beginTransaction();t.detach(f1);t.commitNow();}));findViewById(R.id.tv_2).setOnClickListener((v -> {FragmentTransaction t = fragmentManager.beginTransaction();t.attach(f1);t.commitNow();}));

http://www.yidumall.com/news/102778.html

相关文章:

  • 建设企业网站企业网络营销策略分析案例
  • 公司网站备案有什么用重庆网站页面优化
  • 个商个体户可以建设网站不建站网站
  • 小网站开发用哪些技术网络推广赚钱平台有哪些
  • 京东商城官方网站军事新闻俄乌最新消息
  • 做神秘顾客哪个网站好郑州网站制作公司
  • 摄影网站怎么做数据库seo快速排名案例
  • 新网站制作市场品牌网络推广运营公司
  • 竭诚网络网站建设开发推销广告
  • wordpress签到插件下载北京百度关键词优化
  • 一尊网 又一个wordpress站点贵州二级站seo整站优化排名
  • 网站开发问卷调查题南宁seo平台标准
  • wordpress自动发现杭州百度整站优化服务
  • 常州网站建设设计小说推广关键词怎么弄
  • 常州制作企业网站北京昨天出啥大事了
  • 做邀请函好的网站谷歌搜索广告
  • dz网站恢复数据库百度快照优化排名
  • 汉化版wordpress怎么做优化关键词
  • 网站与支付宝对接产品经理培训
  • 网站建设型网站横幅(banner)图片在线域名解析ip地址
  • 视频网站如何推广网络营销的工作内容包括哪些
  • 织梦动漫网站模板建站公司
  • 长春做网站选长春万网1元购买域名
  • 做网站数据需要的软件网页怎么做
  • 微信端网站设计规范今日深圳新闻最新消息
  • 电子商务网站开发课程教案百度一下了你就知道官网
  • 网站建设php的心得和体会新媒体营销案例ppt
  • 上海人才网官方网站互联网广告平台排名
  • 网站内容如何编辑成都优化官网公司
  • 郑州专业网站建设公司首选网店代运营一年的费用是多少