Fragment页面之间传值、基本例子演示、生命周期、兼容性

一、Fragment起初:
3.0以后版本推出的Fragment

二、Fragment之间的通讯:
程序要求:创建一个侧边栏效果的fragment布局,左边是新闻分类列表,右面是没一个模块的内容。

1、FragmentList.java文件的代码:

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class FragmentList extends Fragment implements OnItemClickListener {

private String[] objects = {"新闻", "娱乐", "财经", "科技", "生活", "新闻", "娱乐", "财经", "科技", "生活"};
private int[] imageArray = {
R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5, 
R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5};


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("onCreateView");

ListView mListView = (ListView) inflater.inflate(R.layout.fragment_list, null);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getActivity(), android.R.layout.simple_list_item_1, objects);
mListView.setAdapter(adapter);
// 设置ListView的item的点击事件
mListView.setOnItemClickListener(this);

return mListView;
}


/**
* 当ListView的子条目被点击时回调此方法, position 被点击那个item的索引
*/
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String text = objects[position];
int imageId = imageArray[position];

// Fragment界面之间的通信【】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】】这个是重点!!!
FragmentContent fc = (FragmentContent) 
getActivity() // 获得上下文对象
.getSupportFragmentManager() // 获得Fragment管理器
.findFragmentById(R.id.fragment_content); // 通过Fragment管理器根据id找到对应的fragment

fc.setNewText(text);
fc.setNewIcon(imageId);
}


@Override
public void onAttach(Activity activity) {
System.out.println("onAttach");
super.onAttach(activity);
}


@Override
public void onCreate(Bundle savedInstanceState) {
System.out.println("onCreate");
super.onCreate(savedInstanceState);
}


@Override
public void onActivityCreated(Bundle savedInstanceState) {
System.out.println("onActivityCreated");
super.onActivityCreated(savedInstanceState);
}


@Override
public void onStart() {
System.out.println("onStart");
super.onStart();
}


@Override
public void onResume() {
System.out.println("onResume");
super.onResume();
}


@Override
public void onPause() {
System.out.println("onPause");
super.onPause();
}


@Override
public void onStop() {
System.out.println("onStop");
super.onStop();
}


@Override
public void onDestroyView() {
System.out.println("onDestroyView");
super.onDestroyView();
}


@Override
public void onDestroy() {
System.out.println("onDestroy");
super.onDestroy();
}


@Override
public void onDetach() {
System.out.println("onDetach");
super.onDetach();
}
}




2、FragmentContent.java文件的内容:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

public class FragmentContent extends Fragment {


private TextView tvNews;
private ImageView ivNewPic;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_content, null);
tvNews = (TextView) view.findViewById(R.id.tv_news);
ivNewPic = (ImageView) view.findViewById(R.id.iv_new_pic);
return view;
}

/**
* 设置新闻文本
* @param text
*/
public void setNewText(String text) {
// 修改TextView的内容
tvNews.setText(text);
}


/**
* 设置新闻图片
* @param text
*/
public void setNewIcon(int id) {
// 修改ImageView的图片
ivNewPic.setImageResource(id);
}

}

三、Fragment生命周期

onAttach  当Fragment绑定在Activity时执行
onCreate  当Fragment创建时执行
onCreateView Fragment创建布局
onActivityCreated 当Activity创建完成时.
onStart Fragment开启
onResume 当Fragment获取焦点时回调, 这时候Fragment已经可以和用户交互了.

onPause Fragment暂停时.
onStop  Fragment停止
onDestroyView Fragment销毁布局时
onDestroy Fragment销毁
onDetach 把当前Fragment从Activity中解绑


四、兼容性

在安卓3.0之前是没有fragment控件的,所以呢,为了能让安卓2.3的用户可以使用到fragment控件,这里可以使用一个扩展包,一个名字叫做:android-support-v4.jar的包导入即可解决问题!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值