Android学习笔记(1.2)Fragment

今天做了一个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);
		
	}
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		/*setListAdapter(new ArrayAdapter<BookContent.Book>)*/
		
		
		// 为该ListFragment设置Adapter

		setListAdapter(new ArrayAdapter<BookContent.Book>(getActivity(),
				android.R.layout.simple_list_item_activated_1,
				android.R.id.text1, BookContent.ITEMS));
	}
	@Override
	public void onAttach(Activity activity)
	{
		super.onAttach(activity);
		// 如果Activity没有实现Callbacks接口,抛出异常
		if (!(activity instanceof Callbacks))
		{
			throw new IllegalStateException(
				"BookListFragment所在的Activity必须实现Callbacks接口!");
		}
		// 把该Activity当成Callbacks对象
		mCallbacks = (Callbacks)activity;
	}
	
	// 当用户点击某列表项时激发该回调方法

	@Override
	public 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中被删除时回调该方法
	@Override
	public 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里面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值