-
ViewPager使用总结。 1.在xml中增添</android.support.v4.view.ViewPager> 2.新建多个layout,作为多个View 3.使用View.inflate(,,)方法将layout.xml转化为View对象。 View view1= View.inflate(this, R.layout.view1, null); 4.将多个View对象增添到 List<View>对象中。 5.自定义PagerAdapter类。 继承“抽象类PagerAdapter” 5.2. 为自定义的PagerAdapter类增添构造函数,要求将viewList传递进来。 public class MyPagerAdapter extends PagerAdapter 6. 实现“未实现方法”和两个必要方法 6.1 public int getCount(){ //返回页卡(View)数量 return viewList.size(); } 6.2 public boolean isViewFromObject(View arg0, Object arg1) { //判断View是否来自对象,用来给外部使用,判断两个view是否一致 return arg0==arg1; } 6.3 public Object instantiateItem(ViewGroup container, int position) //实例化一个页卡。 { //将view增添到ViewGroup中 container.addView(viewList.get(position)); return viewList.get(position); } 6.4 public void destroyItem(ViewGroup container, int position, Object object) //销毁一个页卡 { container.removeView(viewList.get(position)); } 7.设置适配器即可查看全部
-
一、使用ViewPager实现导航: 1)ViewPager介绍:ViewPager可以使视图左右滑动 2)加入ViewPager: <android.suppor.v4.view.ViewPager android:id="@+id/pager" android:layout_width="wrap_content" andriod:layout_height="wrap_content" android:layout_gravity="center" > </android.support.v4.view.ViewPager> 3)加载显示的页卡:将Layout布局转换为View对象 (1)LayoutInflater lf = getLayoutInflater().from(this); lf.inflate(resource,root); (2)View.inflate(context,resource,root); 4)配置Adapter适配器: (1)PagerAdapter 数据源:List<View> (2)FragmentPagerAdapter 数据源:List<Fragment> (3)FragmentStaePagerAdapter 数据源:List<Fragment>查看全部
-
FragmentManager fragmentManager=getFragmentManager(); Fragment findFragmentById=fragmentManager.findFragmentById(R.id.frag); Myfragment frag=(Myfragment) findFragmentById; frag.setAaa("Fragment静态传值");查看全部
-
将数据(这里是字符串 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!查看全部
-
1,Fragment可以作为activity界面的一部分组成出现 2,可以在一个activity中同时出现多个Fragment,并且一个Fragment也可以在多个Activity中使用 3,在Activity运行过程中,可以添加,移除或替换Fragment 4,Fragment可以响应自己的输出事件,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期影响查看全部
-
MyFragmentPagerAdapter没有自动销毁的的功能查看全部
-
fragment接收数据 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。查看全部
-
Activity向Fragment传递数据 1.实例化Bundle数据包。 使用putXXX(key,value);方式将键值对数据放入数据包。 Bundle bundle=new Bundle(); bundle.putString("data", editText.getText().toString()); 2.对实例化的Fragment进行传值。使用setArguments(bundle)方式 CommunicationFragment fragment=new CommunicationFragment(); fragment.setArguments(bundle); //设置数据包 3.在Fragment端,使用getArguments获取Bundle数据包。 Bundle bundle=getArguments(); 4.使用 bundle.getXXX(key); 使用该方式,通过键获取数据。 bundle.getString("data")查看全部
-
启动fragment onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume() 屏幕锁屏 onPause()->onStop() 屏幕解锁 onStart()->onResume() 第一个fragment切换到第二个fragment 第一个onPause()->onStop()->onDestoryView()->onDestory()->onDetach(); 第二个onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()查看全部
-
onattach()方法: 当fragment被添加到Activity中时会回调这个这个方法,只调用一次。 oncreateview();每次创建都会绘制Fragment的view组件时回调该方法 onstart():启动Fragment; onresume():恢复Fragment时会被回调,调用onstart()方法后面一定会调用onresume()方法;查看全部
-
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 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()方法。 beginTransaction.addToBackStack(null)返回 beginTransaction.add(containerViewId,fragment)的两个参数: containerViewId:布局ID,这里是 R.id.fragment。 fragment:Framgent类对象,这里是MyFragment2的对象 fragment2。查看全部
-
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,不然程序无法运行。 各文件之间的关联 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的完整类名";如android:name="com.example.fragmentdemo.MyFragment" 其中,myfragmnet是fragmen布局的class文件,通过name将布局传给fragment 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。查看全部
-
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); //未完待续... }查看全部
举报
0/150
提交
取消