-
将数据(这里是字符串 code) 从Fragment 传给 Activity: 1.定义一个接口 MyListener,里面定义一个无方法体的方法thank( String str); 2.创建 MyListener对象 listener; 3.重写方法 onAttach(Activity activity);将activity强制转换为MyListener并赋值给 listener; 4.在方法 onCreateView中写上 listener.thank(code); 实际上就是把数据 code 传递给了 activity!查看全部
-
在 MyFragment5 中定义内部接口 MyListener查看全部
-
Fragment与Activity通信 (1)Fragment可以调用getActivity()方法获取它所在的Activity; (2)Activity可以调用FragmentManager的findFragmentById()或者findFragmentByTag()方法获取Fragment。 Activity --> Fragment:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法,然后在Fragment中使用getArguments()获取Bundle数据包。 Fragment --> Activity:需要在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口。这样Fragment可调用该回调方法将数据传递给Activity。查看全部
-
摘自他人笔记 Fragment的生命周期 1、 onAttach();//当fragment被添加到activity中时会回调这个方法;只会调用一次 2、 onCreate();//在fragment创建的时候回调这个方法;只会调用一次; 3、 onCreateView()://每次创建都会绘制Fragment的View组件时调用该方法,相当于fragment绑定一个布局,布局文件转换成view返回回来; 4、 onActivityCreated();//fragment所在的activity启动完成后调用; 5、 onStart():启动Fragment时会被回调, 6、 onResume()方法,调用onStart()方法后面一定会调用这个方法,恢复fragment时回调 7、 onPause():暂停Fragment 8、 onStop();//停止Fragment 9、 onDestroyView():销毁Fragment所包含的View组件,与onCreateView相对应 10、 onDestroy():销毁Fragment时会被回调 11、 onDetach():Fragment从Activity中删除时回调这个方法,并且只调用一次 ------------------------------------------------------------------------ 启动fragment onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume() 屏幕锁屏 onPause()->onStop() 屏幕解锁 onStart()->onResume()查看全部
-
Fragment生命周期受到Activity状态的影响查看全部
-
beginTransaction.add(containerViewId,fragment)的两个参数: containerViewId:布局ID,这里是 R.id.fragment。 fragment:Framgent类对象,这里是MyFragment2的对象 fragment2。查看全部
-
动态加载 撰写代码将Fragment添加到一个Activity layout中 add(): 添加一个Fragment(指定要添加的fragment和插入的View) 与此类似的还有 remove()、replace()。 ------------------------- 处理 Fragment 事务 根据用户的交互情况,对Fragment进行添加、移除、替换,以及执行其他动作,提交给Activity的每一套变化称作一个事务。 //获取事务管理者 FragmentManager fragmentManager = getFragmentManager(); //通过事务管理者开启一个事务 FragmentTransaction beginTransaction = fragmentManager.beginTransaction(); 每一个事务都是同时执行一套变化,可以在一个事务中设置所有想执行的变化,包括add()、remove()、replace(),然后提交给Activity,提交必须调用commit()方法。 如果允许用户通过按下BACK按键返回到前一个Fragment状态,调用commit() 之前可以加入 addToBackStack()方法。查看全部
-
各文件之间的关联 MainActivity --> main.xml、MainActivity2 MainActivity2 --> main2.xml --> MyFragemt.java -->fragment.xml AndroidManifest --> MainActivity2查看全部
-
这节课的思路是 1.现有的一个MainActivity(主界面),它的布局文件是Main.xml(含有RadioGroup,RadioButton),这里没有代码的讲解,可以先使用本课程的源码; 2.之后老师创建了一个MainActivity2(静态加载Fragment的界面),它对应的布局文件是Main2.xml(这个布局里添加了一个Fragment标签-->静态加载),并在这个xml文件中为Fragment标签定义了属性 name="MyFragment.Java的完整类名"; 3.MyFragment.java继承了Fragment,并重写onCreatView(),这个方法返回一个view对象。但在这之前需要为这个类创建一个布局文件fragment.xml,并在 fragment.xml 添加一个TextView和Button。MyFragment.Java通过inflate.infalte()将 fragment.xml添加进来并创建了View对象。-->回到MainActivity2通过setContextView()将main2.xml加载。 4.最后回到 MainActivity.java 为第一个RadioButton添加点击事件(通过intent意图,跳转到MainActivity2) 老师在MainActivity2中直接通过findViewById()将fragment.xml文件中的Button加载,这是因为通过层层加载,这个button已经在于main2.xml中了。 最后在清单文件中添加MainActivity2,并在main2.xml中为Fragment标签添加一个id或tag。查看全部
-
Activity加载了Fragment(本例中是MainActivity2内部写上setContentView(R.layout.main2);),那么Fragment内部的控件会被Activity直接访问到,所以如图所示直接使用 textView = (TextView)findViewById(R.id.textView); 而不是通过下面的方法: View view = inflater.inflate(R.layout.fragment,container,false); textView = (TextView)view.findViewById(R.id.textView); ------------------------------------------ 另外,使用静态加载的方式,fragment必须要有id或者tag,不然程序无法运行。查看全部
-
onCreateView()方法 Fragment第一次绘制它的用户界面的时候,系统会调用此方法,为了绘制Fragment的UI,此方法必须返回一个View,如果不想显示UI,返回null即可。 ------------------------ Fragment加载方式: 1.静态加载 2.动态加载 ------------------------ 静态加载 在Activity的layout文件中声明Fragment,需要特别注意的是<Fragment>中的android:name属性指定了在layout中实例化的Fragment类。 标识Fragment的方法: android:id属性提供了一个唯一的ID; android:tag属性提供了一个唯一的字符串。 ---------------------------------------- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /** * 重点:layout布局文件转换成View对象 */ /** * inflater.inflate(resource,root,attachToRoot)的三个参数 * resource:Fragment需要加载的布局文件 * root:加载layout的父ViewGroup * attachToRoot:false,不返回父ViewGroup */ inflater.inflate(R.layout.fragment,container,false); //未完待续... }查看全部
-
Fragment知识概要 1.Fragment可以作为Activity界面的一部分组成出现; 2.可以在一个Activity中同时出现多个Fragment,并且一个Fragment也可以在多个Activity中使用; 3.在Activity运行过程中,可以添加、移除或替换Fragment; 4.Fragment可以响应自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期的影响,宿主终结,Fragment也就终结了。查看全部
-
Fragment:模块化、可重用查看全部
-
Fragment(片段,碎片)的设计哲学 Android在3.0中引入了Fragment的概念,主要目的是用在大屏幕设备上,例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。 -------------------------------------------------- 举例:如图,平板的布局可以同时显示两个部分,而手机显示一个。以前的做法需要在layout布局上做极大的改动才能分别适应平板和手机的布局,但是,现在有了Fragment,因为Fragment有自己独立的生命周期,有自己独立的响应,就可以在平板的一个Activity中包含两个Fragment,而手机的两个Fragment分别交给两个Activity,这样就不需要对整个Layout重新布局、重新适配。所以Fragment是一种非常动态、非常灵活的UI设计方式查看全部
-
scrollview用得很多,页面基本都要加载scrollview查看全部
举报
0/150
提交
取消