fragment切换

QQ最新版布局猜想

為{幸葍}努か 提交于 2019-12-04 18:21:44
最近想实现类似QQ的布局,使用toolbar,tablayout,viewpager,drawerlayout等控件,碰到了一些问题。 底部按钮切换之后,每个页面头部布局不一样。使用toolbar的话,需要在每个fragment中使用单独的toolbar。这样又出现一个新的问题,drawerlayout如何操作,drawerlayout需要与activity关联,并且在每个fragment中应该只有一个实例。 toolbar放在fragment中之后,每个fragment menu不显示,因为fragment的menu依附于activity(就我个人理解)。 将toolbar放在activity中,可以保证drawer只有一个,但是这样得控制每个页面的toolbar 的布局。 最近通过截取QQ的布局,它的头像是放在framelayout中,在activity中保持同样的位置,这样每个页面打开个人资料都是一样的,也就是说activity不使用toolbar。每个页面使用 独立 的toolbar(当然它并没有使用这个控件)。但是 drawerlayout需要用到 toolbar,因此如果使用QQ的方式就不能用 drawerlayout . 最后采取的是类似QQ的布局,去掉 drawerlayout,使用其他侧滑菜单。 每个fragment需要使用toolbar来初始化menu。

第03讲 fragment

♀尐吖头ヾ 提交于 2019-12-04 16:10:11
Fragment 官网文档: https://developer.android.google.cn/guide/components/fragments 什么是Fragment 在手机上,Activity作为用户和应用交互的界面。如果界面上的View较多较复杂时,Activity会较复杂。Fragment提供了一种解决方案,把view放到几个Fragment中,然后再由这些Fragment拼成一个完整的Activity。 如果多个界面中有相同的部分,可以将重复部分放在fragment中,然后在多个activity中使用该fragment,达到风格统一,代码重用的目的。 Fragment的应用场景: Fragment的使用 静态添加Fragment 1. 准备Fragment使用的layout文件 2. 新建Fragment类,继承自Fragment 注意:需要重写onCreateView方法; 推荐使用support-v4包中的Fragment类。 public class LeftFragment extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle

fragment

a 夏天 提交于 2019-12-04 15:06:35
1.getActivity();//获取包含该fragment的活动(activity)上下文 2.getContext();//获取该fragment上下文 3.getActivity().getApplicationContext();//通过包含该fragment的活动(activity)获取整个应用的上下文 4.getContext().getApplicationContext();//通过该fragment获取整个应用的上下文 onCreateView():加入fragment的layout onCreateView是创建的时候调用,onViewCreated是在onCreateView后被触发的事件 FragmentManager 调用getSupportFragmentManager() 获取FragmentManager popBackStack() :使片段从返回栈弹出 addOnBackStackChangedListener():注册监听返回栈变化的监听器 接口: FragmentManager.BackStackEntry 片段返回栈中片段的数量 类: FragmentManager.OnBackStackChangedListener 监听返回栈变化的监听器 POP_BACK_STACK_INCLUSIVE: 若已设置,则将提供返回栈条目,直到抵达栈底

作业7 (2)

烈酒焚心 提交于 2019-12-04 09:10:58
两种包 import Fragment包分为两种: android.support.app.Fragment: android.support.v4.app.Fragment:兼容性更强 常用的类和方法 类 FragmentActivity:可包含多个Fragment FragmentManager:嵌入片段,使用getFragment(),嵌入多级片段,使用getChildFragment() FragmentTranscation:执行Fragment增加、删除、替换 Fragment常用操作 动态切换fragment内布局 通过对内嵌的布局进行 addView 或者 removeView 方法进行动态切换 3 使用集合向ViewPager中添加嵌套Fragment 来源: https://www.cnblogs.com/akaxuan/p/11851935.html

ViewPager刷新遇到的坑

匿名 (未验证) 提交于 2019-12-03 00:39:02
今天写了个ViewPager+Fragment,切换,刷新Fragment数据的demo,写的吐血 1. for ( int i = 0 ; i < mCategoryEntityList .size() ; i++) { DefualInfoFragment meFragment = new DefualInfoFragment() ; Bundle bundle = new Bundle() ; bundle.putString(Constant. CHANNEL_CODE , mCategoryEntityList .get(i).toString()) ; meFragment.setArguments(bundle) ; fragments .add(meFragment) ; } adapter = new NewsPagerAdapter(getChildFragmentManager() , fragments ) ; mViewPager .setAdapter( adapter ) ; 循环四个Fragment加到list中,到这里都没问题 这时候,我准备点击加号,改变Fragment的顺序 然后调用 notifyDataSetChanged() 我去,竟然没有用 百度发现,出现这种原因,是因为ViewPager具有缓存作用,他默认会缓存三个Fragment

Fragment 使用和坑

匿名 (未验证) 提交于 2019-12-03 00:34:01
fragment 相比于activity更加节约内存,fragment 可以灵活的在activity中加载、切换,同时也有自己的生命周期 Fragment 优点 Fragment 可以将 Activity 分离成多个可重用的组件,每个都有它自己的生命周期和 UI。 Fragment可以轻松得创建动态灵活的 UI 设计,可以适应于不同的屏幕尺寸。从手机到平板电脑,在不同的安卓设备上统一你的UI。 Fragment是一个独立的模块,紧紧地与 activity 绑定在一起。可以运行中动态地移除、加入、交换等。 Fragment解决Activity之间的切换不流畅,轻量切换。 Fragment替换TabActivity做导航性能更好。 1、静态加载:直接写入到 layout 中 2、动态加载:使用FragmentManager进行管理(通常使用 supportFragmentManager),开启 transaction ,添加以后,commit 前者适用于页面较少的情况,后者适用于页面较多的情况。FragmentStatePagerAdapter 在每次view pager 切换页面的时候,是回收了内存的。前者只是调用了 detach 方法和activity分开,没有释放内存。 使用FragmentPagerAdapter+ViewPager时,切换回上一个Fragment页面时

Fragment 中 commit commit already called

匿名 (未验证) 提交于 2019-12-03 00:29:01
每一个实例化后的 FragmentTransaction 的事物只能被提交一次,我开始时是定义了一个全局的 FragmentTransaction,然后就只在 onCreate() 方法中实例化了一次,但是我设置点击事件切换 fragment 时,会导致二次 commit,所以会报错。 @Override public void onClick ( View view ) { switch ( view . getId ()) { case R . id . btn_first : mTransaction . hide ( secondFragment ). hide ( thirdFragment ). show ( firstFragment ). commit (); break ; case R . id . btn_second : mTransaction . hide ( firstFragment ). hide ( thirdFragment ). show ( secondFragment ). commit (); break ; case R . id . btn_third : mTransaction . hide ( firstFragment ). hide ( secondFragment ). show ( thirdFragment ).

Activity和Fragmen利用接口回调互相传递数据

匿名 (未验证) 提交于 2019-12-03 00:22:01
第一种:Fragment对Activity传递数据 首先上张Gif图,看起来直观一点,直入主题。自己手机录屏然后转的Gif图。 哇 好大啊 这动图 可以看出,通过点击InfoFragment界面的按钮来实现activity底部导航栏(这里我用的BottomNavigationBar)数字的更新。 InfoFragment.java主要代码 int num = 0 ; public InfoCallback infoCallback ; public interface InfoCallback { void updateBadgeCount ( int num ); } public void initView () { bt = ( Button ) view . findViewById ( R . id . fragment_info_bt ); bt . setOnClickListener ( new View . OnClickListener () { @Override public void onClick ( View view ) { num ++; infoCallback . updateBadgeCount ( num ); } }); } @Override //这是最重要的代码,目的就是为接口赋值,使其不为空 public void onAttach

Fragment详解

不想你离开。 提交于 2019-12-02 21:40:38
相关文章: 1、 《Fragment详解之一——概述》 2、 《Fragment详解之二——基本使用方法》 3、 《Fragment详解之三——管理Fragment(1)》 4、 《Fragment详解之四——管理Fragment(2)》 5、 《Fragment详解之五——Fragment间参数传递》 6、《Fragment详解之六——如何监听fragment中的回退事件与怎样保存fragment状态》 今天开始给大家总结下有关Fragment使用方法的东东,内容比较多,这个系列可以要写的博客数量会多一点。 一、为什么会有Fragment——设计理念 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上–例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏 幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理 viewhierarchy的复杂变化。 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化.( http://developer.android.com/guide/topics/fundamentals/fragments.html )

Android初级开发笔记 -- 关于Fragment的回退栈

走远了吗. 提交于 2019-12-02 10:46:50
一直想好好研究一下项目中经常用到的Fragment。这篇先记录一下对Fragment的回退栈的学习。 文章目录 一、什么是Fragment 二、Fragment的生命周期 三、实例讲述Fragment回退栈 区别 总结 四、结语 一、什么是Fragment Fragment是Android3.0之后引入的可嵌入activity中的碎片化组件,实现了界面的最大化利用。有以下几个特点: (1)不可独立存在,但是有自己的生命周期。不过因为与activity关联在一起,生命周期会受activity影响。 (2) 可静态引入也可动态加载。推荐使用support-v4中的android.support.v4.app.Fragment而非系统内置的android.app.Fragment。因前者能让Fragment在所有Android系统版本中保持功能一致性。 二、Fragment的生命周期 先po一张经典生命周期图: 我们可以看到有几个关键的回调方法。 onAttach() Fragment和Activity建立关联的时候调用(获得activity的传递的值) onCreateView() 为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局) onActivityCreated() 当Activity中的onCreate方法执行完后调用