首先看一下 Fragmen的生命周期如图所示
Fragment调用的方法以及说明
方法名 说明
onAttach () Fragment被附加到Activity的时,调用此函数,在这个方法中可以获得宿主Activity。
onCreate () Fragment被创建的时,调用此函数。
onCreateView () Fragment的布局加载时,调用此函数。
onActivityCreated () 当宿主Activity启动完毕后,调用此函数。
onStart () 启动Fragment时,调用此函数。
onResume () Fragment恢复时,调用此函数。
onPause () Fragment暂停时,调用此函数。
onStop() Fragment停止时,调用此函数。
onDestroyView() 销毁Fragment中的View控件时,调用此函数。
onDestroy() 销毁Fragment时,调用此函数。
onDetach() Fragment从Activity脱离时,调用此函数
onAttach () Fragment被附加到Activity的时,调用此函数,在这个方法中可以获得宿主Activity。
onCreate () Fragment被创建的时,调用此函数。
onCreateView () Fragment的布局加载时,调用此函数。
onActivityCreated () 当宿主Activity启动完毕后,调用此函数。
onStart () 启动Fragment时,调用此函数。
onResume () Fragment恢复时,调用此函数。
onPause () Fragment暂停时,调用此函数。
onStop() Fragment停止时,调用此函数。
onDestroyView() 销毁Fragment中的View控件时,调用此函数。
onDestroy() 销毁Fragment时,调用此函数。
onDetach() Fragment从Activity脱离时,调用此函数
Fragment在Activity里面的生命周期
ListView&ViewPager&Fragment以及第三方组件PagerSlidingTabString联合使用
程序如下
FragmentPagerActivit程序
package com.jeredu.administrator.classday11application;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.astuetz.PagerSlidingTabStrip;
import com.jeredu.administrator.classday11application.adapter.MyFragmentAdapter;
import com.jeredu.administrator.classday11application.fragment.pagerFragment;
import java.util.ArrayList;
import java.util.List;
public class FragmentPagerActivity extends AppCompatActivity {
private ViewPager vp;
private PagerSlidingTabStrip pst;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_fragment_pager);
vp = (ViewPager) findViewById(R.id.vp);
pst = (PagerSlidingTabStrip) findViewById(R.id.pst);
List<Fragment> list =new ArrayList<>();
List<String> title = new ArrayList<>();
title.add("体育");
title.add("娱乐");
title.add("奥运");
title.add("财经");
title.add("国际");
for (int i=1;i<=5;i++){
Fragment fragment = new pagerFragment();
Bundle bundle = new Bundle();
bundle.putInt("arg",i);
fragment.setArguments(bundle);
list.add(fragment);
}
MyFragmentAdapter ma =new MyFragmentAdapter(getSupportFragmentManager(),list,title);
vp.setAdapter(ma);//调用适配器
pst.setIndicatorColor(getResources().getColor(R.color.colorAccent));
pst.setIndicatorHeight(5);//条的高度
pst.setTextColor(getResources().getColor(R.color.colorPrimary));//文字颜色
pst.setTabBackground(R.mipmap.ic_launcher);//文字背景图片
pst.setShouldExpand(true);//是否平分
pst.setViewPager(vp);
}
}
布局文件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.jeredu.administrator.classday11application.FragmentPagerActivity"> <com.astuetz.PagerSlidingTabStrip android:layout_width="match_parent" android:layout_height="20dp" android:id="@+id/pst"></com.astuetz.PagerSlidingTabStrip> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vp" android:layout_below="@+id/pst"> </android.support.v4.view.ViewPager> </RelativeLayout>
pagerFragment程序
<span style="font-size:12px;">package com.jeredu.administrator.classday11application.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
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.ListView;
import com.jeredu.administrator.classday11application.IntentActivity;
import com.jeredu.administrator.classday11application.R;
import com.jeredu.administrator.classday11application.adapter.MyListAdapter;
import com.jeredu.administrator.classday11application.adapter.News;
import java.util.ArrayList;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public class pagerFragment extends Fragment {
public pagerFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_pager, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
ListView lv = (ListView) getView().findViewById(R.id.lv);
final List<News> list = new ArrayList<>();
MyListAdapter myListAdapter =new MyListAdapter(list,getActivity());
lv.setAdapter(myListAdapter);
final Bundle bundle = getArguments();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
News news =list.get(i);
Intent intent = new Intent(getActivity(), IntentActivity.class);
intent.putExtra("obj", news);
Bundle b1=new Bundle();
b1.putString("arg1","今天是七月七七夕节");
intent.putExtra("bundle",b1);
startActivity(intent);
}
});
if(bundle!=null){
int arg = bundle.getInt("arg");
switch (arg){
case 1:
for (int i=0;i<20;i++){
list.add(new News(R.mipmap.ic_launcher,"体育新闻 "+i,"今天","新浪网"));
}
myListAdapter.notifyDataSetChanged();
break;
case 2:
for (int i=0;i<20;i++){
list.add(new News(R.mipmap.ic_launcher,"体育新闻 "+i,"今天","新浪网"));
}
myListAdapter.notifyDataSetChanged();
break;
case 3:
for (int i=0;i<20;i++){
list.add(new News(R.mipmap.ic_launcher,"体育新闻 "+i,"今天","新浪网"));
}
myListAdapter.notifyDataSetChanged();
break;
case 4:
for (int i=0;i<20;i++){
list.add(new News(R.mipmap.ic_launcher,"体育新闻 "+i,"今天","新浪网"));
}
myListAdapter.notifyDataSetChanged();
break;
case 5:
for (int i=0;i<20;i++){
list.add(new News(R.mipmap.ic_launcher,"体育新闻 "+i,"今天","新浪网"));
}
myListAdapter.notifyDataSetChanged();
break;
};
}
}
}</span>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jeredu.administrator.classday11application.fragment.pagerFragment">
<!-- TODO: Update blank fragment layout -->
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv">
</ListView>
</FrameLayout>
MyListAdapter适配器
<span style="font-size:12px;">package com.jeredu.administrator.classday11application.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.jeredu.administrator.classday11application.R;
import java.util.List;
/**
* Created by Administrator on 2016/8/9.
*/
public class MyListAdapter extends BaseAdapter {
private List<News> list;
private Context context;
public MyListAdapter(List<News> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return list.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder vh ;
if(view == null){
vh = new ViewHolder();
view = LayoutInflater.from(context).inflate(R.layout.list_layout,null);
vh.img= (ImageView) view.findViewById(R.id.ig);
vh.titile= (TextView) view.findViewById(R.id.title);
vh.pubDate= (TextView) view.findViewById(R.id.pubDate);
vh.from= (TextView) view.findViewById(R.id.from);
view.setTag(vh);
}else{
vh= (ViewHolder) view.getTag();
}
News news= list.get(i);
vh.img.setImageResource(news.getImg());
vh.titile.setText(news.getTitle());
vh.pubDate.setText(news.getPubDate());
vh.from.setText(news.getFrom());
return view;
}
public class ViewHolder{
ImageView img;
TextView titile;
TextView pubDate;
TextView from;
}
}</span>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ig"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/title"
android:text="我是标题"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/pubDate"
android:text="今天"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/from"
android:text="新浪网"/>
</LinearLayout>
MyFragmentAdapter适配器
<span style="font-size:12px;">import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
/**
* Created by Administrator on 2016/8/9.
*/
public class MyFragmentAdapter extends FragmentPagerAdapter{
private List<Fragment>list;
private List<String> titles;
public MyFragmentAdapter(FragmentManager fm ,List<Fragment>list, List<String> titles) {
super(fm);
this.list=list;
this.titles=titles;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}</span>
News新闻类
<span style="font-size:12px;">public class News implements Serializable {
private int img;
private String title;
private String pubDate;
private String from;
public News(){}
public News(int img, String title, String pubDate, String from) {
this.img = img;
this.title = title;
this.pubDate = pubDate;
this.from = from;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPubDate() {
return pubDate;
}
public void setPubDate(String pubDate) {
this.pubDate = pubDate;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
}</span>
实现方法是:首先创建新闻类 然后创建ListView,将一条条新闻放进去,之后将ListView放入到ViewPager里面,然后将在每一个Fragment都放入一个ViewPager这样进行调用,并用PagerSlidingTabString实现连动与翻页,常见的例子很多,这个方法也很实用。