Android学习笔记(1.2)Fragment

来源:互联网 发布:乐视网络电视手机版 编辑:程序博客网 时间:2024/05/21 01:56

今天做了一个Fragment与Activity之间通信的demo,目标是,(大)屏幕左边通过点击一个图书的title,右边显示图书详情,左右即2个fragment,其中多个fragment可以组成一个activity,一个Fragment可以被多个activity调用。

其中需要2个fragment,一个是选项,一个是显示,选项列表需要一个显示列表的ListFragment,该类无须重写OnCreateView()方法,只需要为他设置Adapter即可(Adapter还不清楚!!)

贴上代码说明“

package com.example.framentandactivity;import com.example.model.*;import android.annotation.SuppressLint;import android.app.Activity;import android.app.ListFragment;import android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.ListView;@SuppressLint("NewApi")public class BookListFragment extends ListFragment{private Callbacks mCallbacks;public interface Callbacks{public void onItemSelected(Integer id);}@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);/*setListAdapter(new ArrayAdapter<BookContent.Book>)*/// 为该ListFragment设置AdaptersetListAdapter(new ArrayAdapter<BookContent.Book>(getActivity(),android.R.layout.simple_list_item_activated_1,android.R.id.text1, BookContent.ITEMS));}@Overridepublic void onAttach(Activity activity){super.onAttach(activity);// 如果Activity没有实现Callbacks接口,抛出异常if (!(activity instanceof Callbacks)){throw new IllegalStateException("BookListFragment所在的Activity必须实现Callbacks接口!");}// 把该Activity当成Callbacks对象mCallbacks = (Callbacks)activity;}// 当用户点击某列表项时激发该回调方法@Overridepublic void onListItemClick(ListView listView,View view ,int position,long id){super.onListItemClick(listView, view, position, id);// 激发mCallbacks的onItemSelected方法mCallbacks.onItemSelected(BookContent.ITEMS.get(position).id);}// 当该Fragment从它所属的Activity中被删除时回调该方法@Overridepublic void onDetach(){super.onDetach();// 将mCallbacks赋为null。mCallbacks = null;}public void setActivateOnItemClick(boolean activateOnItemClick){getListView().setChoiceMode(activateOnItemClick ? ListView.CHOICE_MODE_SINGLE: ListView.CHOICE_MODE_NONE);}}

其中Adapter里面需要的数据由model类提供,上面代码贴出来的Fragment的生命周期,和触发选择事件的响应,事件传入了选项的ID,当事件触发,则激发该回调方法。


本实例我理解的流程为:程序先到AndroidMainifest.xml找到程序入口,再通过入口的Activity,Activity开始需要加载一个布局文件,布局文件中有Fragment,该Fragment指定的name为XXXFragment,(就是上面这段代码),这段代码为布局文件提供了数据来显示,和监听事件,再回到入口Activity,加载完布局文件之后,他实现了上面的单击事件的接口,再实现该接口,通过调用另外一个Fragment来找到该图书具体信息,最后再显示到另外一个Fragment里面。

0 0
原创粉丝点击