糖果派对官方网站_可以赌钱的糖果游戏_手机版
Android Fragment使用(二State of Qatar 嵌套Fragments (Nested Fragments卡塔尔(قطر‎ 的施用及广大错误

Android Fragment使用(二State of Qatar 嵌套Fragments (Nested Fragments卡塔尔(قطر‎ 的施用及广大错误

作者:网络编程    来源:未知    发布时间:2020-03-28 11:47    浏览量:

fragment 传递数据到activity 中 直接上代码:

嵌套Fragment的采纳及大范围错误

嵌套Fragments (Nested FragmentsState of Qatar, 是在Fragment内部又增添Fragment.
使用时, 重要要依靠宿主Fragment的 getChildFragmentManager() 来获取FragmentManger.
尽管看起来和在activity中增添fragment大约, 但因为fragment生命周期及拘押复苏格局分歧, 在那之中有一对要求非常注意的地点.
本文内容还包罗了从Fragment迁移到v4.Fragment代码中要求转移的局地地方.

  • 以下代码可一贯复制

嵌套Fragments

嵌套Fragments Nested Fragments 是Android 4.2 API 17 引入的.
目标: 进一层拉长动态复用.
Android Fragment使用(二State of Qatar 嵌套Fragments (Nested Fragments卡塔尔(قطر‎ 的施用及广大错误。倘使要在Android 4.2以前运用, 能够用support library v4的版本, 前面会有详细的迁徙进度介绍.

嵌套Fragment的动态拉长

在宿主fragment里调用getChildFragmentManager())
就可以用它来向那些fragment内部增多fragments.

Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();

平等, 对于内部的fragment来讲, getParentFragment()卡塔尔方法能够拿走到fragment的宿主fragment.

/** * 当FRagmen被加载到activity的时候会被回调 * * @param activity */ @Override public void onAttach(Activity activity) { super.onAttach; if (activity instanceof FragmentInteraction) { listener = (FragmentInteraction) activity; } else { throw new IllegalArgumentException("activity must implements FragmentInteraction"); } } @Override public void onDetach() { super.onDetach(); listener = null; } /** * 定义了宿主activity必须实现的接口 */ public interface FragmentInteraction { /** * Fragment 向Activity传递指令,这个方法可以根据需求来定义 * * @param isTheme */ void isTheme(boolean isTheme); } /** * 用来与外部activity交互的 */ private FragmentInteraction listener;

getChildFragmentManager() 和 getFragmentManager()

getChildFragmentManager()是fragment中的方法, 重临的是治本当前fragment内部子fragments的manager.
getFragmentManager()在activity和fragment中都有.
在activity中, 如若用的是v4 support库, 方法应该用getSupportFragmentManager(), 重返的是管理activity中fragments的manager.
在fragment中, 还叫getFragmentManager(卡塔尔国, 再次来到的是把自个儿加进去的特别manager.

也即, 假如fragment在activity中, fragment.getFragmentManager(卡塔尔获得的是activity中管理fragments的充裕manager.
假使fragment是嵌套在另二个fragment中, fragment.getFragmentManager(State of Qatar取得的是它的parent的getChildFragmentManager(卡塔尔.

小结正是: getFragmentManager(State of Qatar是本品级官员, getChildFragmentManager(卡塔尔(قطر‎是下一流别官员.
这其实是一个树形管理构造.

  • 第二步

使用Support library

再适合的岗位把想要传递的多寡,通过isTheme传递,作者那边是设置大旨通过fragment改进MainActivity的tab颜色,此方法根据专门的事业要求团结定义,譬如传递对象,变量等.

怎么要接受support library? 有二种原因:

  1. 要在API level11事情发生早先使用fragment.
  2. 要在API Level 17早前使用getChildFragmentManager(), 纵然用嵌套Fragment.
  • 第三步

搬迁到support library须要退换哪些地方?

把Fragment迁移到v4版本, 要求改换如下地点:

import android.app.Fragment; -> import android.support.v4.app.Fragment;
Activity -> FragmentActivity / AppCompatActivity
activity.getFragmentManager() -> getSupportFragmentManager()

Loader, LoaderManager, LoaderCursor也需要改成v4包的.
activity.getLoaderManager() -> getSupportLoaderManager()

Fragment中onTrimMemory(卡塔尔方法不见了
早前是以此方法

    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
        imageLoader.trimMemory(level);
    }

v4版本须求改成那个

   @Override
    public void onLowMemory() {
        super.onLowMemory();
        imageLoader.trimMemory(ComponentCallbacks2.TRIM_MEMORY_COMPLETE);
    }

宿主activity完毕FragmentInteraction重写isTheme(卡塔尔(قطر‎方法获得fragment的数目

嵌套Fragment使用大范围错误

上一篇:没有了
下一篇:没有了
友情链接: 网站地图
Copyright © 2015-2019 http://www.tk-web.com. bb电子糖果派对有限公司 版权所有