微信实例_Fragment and viewPager

一、Fragment

注意:

1、要使用V4包

2、Fragment类中

  inflater.inflate(R.layout.tab01,container,false)

 

* @param inflater The LayoutInflater object that can be used to inflate
* any views in the fragment,
* @param container If non-null, this is the parent view that the fragment's
* UI should be attached to. The fragment should not add the view itself,
* but this can be used to generate the LayoutParams of the view.
* @param savedInstanceState If non-null, this fragment is being re-constructed
* from a previous saved state as given here.
*

 

 如果最后没有False,会出错

The specified child already has a parent. You must call removeView() on the child's parent first.

 

MainActivity

package com.example.mysecond;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity {

    protected Fragment weixin,friend,address,setting;
    protected ImageButton weixinButton1,friendButton2,addressButton3,settingButton4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }
    protected void init(){
        //为每个按钮添加监听器
        weixinButton1= (ImageButton) findViewById(R.id.id_tab_weixin_img);
        friendButton2= (ImageButton) findViewById(R.id.id_tab_frd_img);
        addressButton3= (ImageButton) findViewById(R.id.id_tab_address_img);
        settingButton4= (ImageButton) findViewById(R.id.id_tab_settings_img);

        weixinButton1.setOnClickListener(new MyButtonListener());
        friendButton2.setOnClickListener(new MyButtonListener());
        addressButton3.setOnClickListener(new MyButtonListener());
        settingButton4.setOnClickListener(new MyButtonListener());

        weixin=new weixin();
        friend=new friend();
        address=new address();
        setting=new Setting();

        FragmentManager fragmentManager=getSupportFragmentManager();
        FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();

        fragmentTransaction.add(R.id.MyFragment,weixin);
        fragmentTransaction.add(R.id.MyFragment,friend);
        fragmentTransaction.add(R.id.MyFragment,address);
        fragmentTransaction.add(R.id.MyFragment,setting);

        hideFragment(fragmentTransaction);
        fragmentTransaction.show(weixin);
        fragmentTransaction.commit();

        weixinButton1.setImageResource(R.drawable.tab_weixin_pressed);
    }
    //重新设置ImageButton为不亮
    protected void resetImg(){
        weixinButton1.setImageResource(R.drawable.tab_weixin_normal);
        friendButton2.setImageResource(R.drawable.tab_find_frd_normal);
        addressButton3.setImageResource(R.drawable.tab_address_normal);
        settingButton4.setImageResource(R.drawable.tab_settings_normal);
    }
    //隐藏所有Fragment
    protected void hideFragment( FragmentTransaction fragmentTransaction){
        if(weixin!=null){
            fragmentTransaction.hide(weixin);
        }
        if(friend!=null){
            fragmentTransaction.hide(friend);
        }
        if(address!=null){
            fragmentTransaction.hide(address);
        }
        if(setting!=null){
            fragmentTransaction.hide(setting);
        }
    }
    class MyButtonListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            resetImg();
            FragmentManager fragmentManager=getSupportFragmentManager();
            FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
            hideFragment(fragmentTransaction);
            switch (v.getId())
            {
                case R.id.id_tab_weixin_img:
                {
                    if(weixin==null){
                        weixin=new weixin();
                        fragmentTransaction.add(R.id.MyFragment,weixin);
                    }
                    fragmentTransaction.show(weixin);
                    weixinButton1.setImageResource(R.drawable.tab_weixin_pressed);
                    break;
                }
                case R.id.id_tab_frd_img:
                {
                    if(friend==null){
                        friend=new friend();
                        fragmentTransaction.add(R.id.MyFragment,friend);
                    }
                    fragmentTransaction.show(friend);
                    friendButton2.setImageResource(R.drawable.tab_find_frd_pressed);
                    break;
                }
                case R.id.id_tab_address_img:
                {
                    if(address==null){
                        address=new address();
                        fragmentTransaction.add(R.id.MyFragment,address);
                    }
                    fragmentTransaction.show(address);
                    addressButton3.setImageResource(R.drawable.tab_address_pressed);
                    break;
                }
                case R.id.id_tab_settings_img:
                {
                    if(setting==null){
                        setting=new Setting();
                        fragmentTransaction.add(R.id.MyFragment,setting);
                    }
                    fragmentTransaction.show(setting);
                    settingButton4.setImageResource(R.drawable.tab_settings_pressed);
                    break;
                }
            }
            fragmentTransaction.commit();
        }
    }
}

Activity_main

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
    tools:context="com.example.mysecond.MainActivity">

    <include layout="@layout/top"/>
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/MyFragment">
    </FrameLayout>
    <include layout="@layout/bottom"/>
</LinearLayout>

 Fragment

public class weixin extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.tab01,container,false);
    } 
}

 二、viewpager

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

    </android.support.v4.view.ViewPager>

 

  private void initGuide() {
        vp_guide = (ViewPager) findViewById(R.id.vp_guide);

        //初始化数据
        listView = new ArrayList<View>();
        int imageViewId[]=new int[]{R.mipmap.guide_1,R.mipmap.guide_2,R.mipmap.guide_3};
        for (int ivId:imageViewId){
            ImageView imageView=new ImageView(this);
            imageView.setBackgroundResource(ivId);
            listView.add(imageView);
        }

        vp_guide.setAdapter(new PagerAdapter() {

            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                container.addView(listView.get(position));
                return listView.get(position);
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                //container.removeView(listView.get(position));
                container.removeView((View)object);
            }

            @Override
            public int getCount() {
                return listView.size();
            }

            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view==object;
            }
        });
    }

  

  

  

 

//container.removeView(listView.get(position));
container.removeView((View)object);
posted @ 2016-07-27 18:39  324四哥  阅读(162)  评论(0编辑  收藏  举报