Fragment的简单实用与Fragment的生命周期

首先看一下 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脱离时,调用此函数


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实现连动与翻页,常见的例子很多,这个方法也很实用。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值