Fragment的简单使用

来源:互联网 发布:工程项目管理软件源码 编辑:程序博客网 时间:2024/05/22 09:02

1.先布局

<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=".MainActivity" >

    <android.support.v4.view.ViewPager
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/vp"
        >
        
    </android.support.v4.view.ViewPager>

</RelativeLayout>



<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=".MainActivity" >

    <ListView
        android:id="@+id/frag_left_lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></ListView>

</RelativeLayout>



<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <ImageView
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/ic_launcher"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是一只机器人"
        />

</LinearLayout>



2.manActivity类

public class MainActivity extends FragmentActivity {

    List<Fragment> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
 
         * 1.初始化控件
         * 2、初始化数据
         * 3、创建adapter对象
         * 4、绑定
        
        ViewPager vp = (ViewPager) findViewById(R.id.vp);
        initData();
        //因为继承FragmentActivity 那么我们就可以在该类中获取到  这个Fragment管理器
        FragmentManager fm = getSupportFragmentManager();
        MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(fm);
        vp.setAdapter(adapter);
    }

    private void initData() {
        list = new ArrayList<Fragment>();
        list.add(new FragmentOne());
        list.add(new FragmentTwo());
    }
    
    class MyFragmentPagerAdapter extends FragmentPagerAdapter{

        public MyFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
            // TODO Auto-generated constructor stub
        }

 
         * 该方法是用来返回显示的  item  就是 Fragment对象
         * arg0 就是当前viewpager的position
     
        @Override
        public Fragment getItem(int arg0) {
            // TODO Auto-generated method stub
            return list.get(arg0);
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            if(list != null){
                return list.size();
            }
            return 0;
        }
        
    }

}

3.Fragment的实现

                     推荐使用support.v4包中的fragment
                      因为该包是用来支持3.0版本一下的手机的
public class FragmentOne extends Fragment{
    
    List<String> list;
    
                       为该fragment 设置一个现实的  view
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
     
         * 1、作为fragment要显示的视图  可以使用View.inflate引入
         * 2、在引入布局文件的时候 需要用到activity的上下文
         *         问题:因为当前是在Fragment类中  如果来获取该view需要显示的Activity上下问
         *        思考,之前说过  fragment的使用必须依赖于Activity,
         *   所以api提供了一个方法  可以在Fragment中获取依赖的Activity对象
       
        View view = View.inflate(getActivity(), R.layout.frag_left, null);
        
   
         * 1
         * 2
         * 3
         * 4
      
        ListView lv = (ListView) view.findViewById(R.id.frag_left_lv);
        initData();
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, list);
        lv.setAdapter(adapter);
        
        return view;
    }

    private void initData() {
        list = new ArrayList<String>();
        for (int i = 0; i < 20; i++) {
            list.add("导航" + i);
        }
        
    }
}