Android学习0906(ViewPager,fragment碎片)

ViewPager

ViewPager实现的是布局之间滑动的效果,因为Viewpager是继承于v4.support jar包的,因此需要导入包,Android Studio的导包的具体步骤如下:File->Project Structure->Modules->app->Dependencies

这里写图片描述
这里写图片描述
这里写图片描述

首先要在XML中写入Viewpager,

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

activity_pagerview.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v4.view.ViewPager
            android:id="@+id/pagerview"
            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
         ></android.support.v4.view.ViewPager>
        <LinearLayout
            android:id="@+id/viewGroup"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="40dp"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >
        </LinearLayout>
    </RelativeLayout>
</FrameLayout>

然后写三个界面

activity_pager_image.xml

<?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="match_parent"
        android:src="@mipmap/image_wa"/>
</LinearLayout>

activtiy_pager_text.xml

<?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"
    android:gravity="center"

    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/grawgreen"
        android:text="我是第二个界面"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/iamgeziwang"/>
</LinearLayout>

activity_pager_button.xml

<?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"
    android:gravity="center">
    <Button
        android:id="@+id/button_pagerview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我是第三个界面的按钮"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/jie2"/>
</LinearLayout>

因为viewpager也需要adapter来设置当前的加载页数和预加载的布局
PagerAdapter.java

package StudentAdapter;

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewpagerAdapter extends PagerAdapter{
    private List<View> views;
    private List<String> mtitles;
    public ViewpagerAdapter(List<View> views) {
        this.views = views;
    }
    @Override
    public int getCount() {
        return views.size();//得到页卡的页数
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(views.get(position));//加载页卡
        return  views.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      //  super.destroyItem(container, position, object);
       container.removeView(views.get(position));//删除页卡
    }
}

ViewPagerActivity.java

package com.example.administrator.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

import StudentAdapter.ViewpagerAdapter;

/**
 * Created by Administrator on 2015/9/6.
 */
public class ViewPagerActivity extends Activity{
    private List<View> views;
    private ViewPager mViewPager;
    private LayoutInflater mInflater;
    private ViewGroup mViewGroup;
    private ViewpagerAdapter mAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager);
        mViewPager= (ViewPager) findViewById(R.id.viewpager);
        mInflater=getLayoutInflater();
        views=new ArrayList<View>();
        views.add(mInflater.inflate(R.layout.activity_pager_image,null));
        views.add(mInflater.inflate(R.layout.activity_pager_button,null));
        views.add(mInflater.inflate(R.layout.activity_pager_text,null));
        mAdapter=new ViewpagerAdapter(views);
        mViewPager.setAdapter(mAdapter);
    }
}

这里写图片描述

带导航小圆点的Viewpager

ViewPager还可以实现加上带有导航的小圆点,需要一个专门的ViewGroup来放这些小圆点,此外还需要给这些小圆点加上点击事件,具体的实现步骤如下:

activity_viewpager.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    </android.support.v4.view.ViewPager>
    <LinearLayout
        android:id="@+id/Linearlayout_viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="30dp"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >
    </LinearLayout>
</RelativeLayout>

三个布局同简单地Viewpager一样,依然是activity_pager_button.xml、activity_pager_text.xml、activity_pager_iamge.xml
Adapter一样
设置小圆点的状态page_indicator_focused.xml和page_indicator.xml

page_indicator_focused.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:width="5dp"
        android:height="5dp"></size>
    <corners android:radius="5dp"></corners>
    <stroke android:color="@color/grawgreen"
        android:width="1dp"></stroke>
    <solid android:color="@color/grawgreen"></solid>
</shape>
page_indicator.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"></corners>
    <size android:width="5dp"
        android:height="5dp"></size>
    <solid android:color="@color/write"></solid>
</shape>

在Java代码中有些不一样,ViewpagerActivity.java

 package com.example.administrator.myapplication;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.ArrayList;
import java.util.List;

import StudentAdapter.ViewpagerAdapter;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewPagerTitleActivity extends Activity{
    private List<View> views;
    private LayoutInflater mInflater;
    private ViewPager viewpager;
    private ViewpagerAdapter mPagerViewAdapter;
    private List<ImageView> mImages;
    private ViewGroup mLinearLayout;
    private PagerTabStrip mPagerTabStrip;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager);
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        mLinearLayout= (ViewGroup) findViewById(R.id.Linearlayout_viewpager);
        // 将要分页显示的View装入数组中
        views = new ArrayList<View>();
        mInflater = getLayoutInflater();
             final View view1 = mInflater.inflate(R.layout.activity_pager_image, null);
            View view2 = mInflater.inflate(R.layout.activity_pager_text, null);
            View view3 = mInflater.inflate(R.layout.activity_pager_button, null);
        View view4 = mInflater.inflate(R.layout.activity_pager_image, null);
            views.add(view1);
            views.add(view2);
            views.add(view3);
        views.add(view4);
        mImages=new ArrayList<ImageView>();
        //将小圆点加入ViewGroup中
        for (int i=0;i<views.size();i++){
            ImageView img=new ImageView(this);//联系上下文
            //设置layoutParams的长和宽
            LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            //设置小圆点之间的间距
            layoutParams.setMargins(20,0,0,0);
            //将布局加载
            img.setLayoutParams(layoutParams);
            //设置校小圆点的样式
            img.setImageResource(R.drawable.page_indicator);
            //将小圆点加入list中
            mImages.add(img);
            //将带有小圆点的list加入ViewGroup中
            mLinearLayout.addView(img);
        };
        //设置初始状态下的第一张的小圆点的状态
        mImages.get(0).setImageResource(R.drawable.page_indicator_focused);
        mPagerViewAdapter = new ViewpagerAdapter(views);
        //设置Adapter
        viewpager.setAdapter(mPagerViewAdapter);
        //设置小圆点的点击事件
        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //设置所有的小圆点的初始状态
                for (ImageView img:mImages){
                    img.setImageResource(R.drawable.page_indicator);
                }
                //设置选中的小圆点的状态
                mImages.get(position%views.size()).setImageResource(R.drawable.page_indicator_focused);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        //设置初始第一张的位置
        viewpager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2/2%views.size());
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
} }

这里写图片描述

无限循环的Viewpager

Viewpager可以实现无限循环,有两种方法,这里说其中的简单的一种,其实就是将页卡的数量设为无限大,在将初始的页卡设为其中间的一张就实现了名义上的无限循环。依旧在前面的基础上进行改动。

acativtiy_pagerview.xml和三个布局基本不变,activity_pager_button.xml、activity_pager_text.xml、activity_pager_iamge.xml
Adapter需要进行一些改动,ViewPagerAdapter.java

package StudentAdapter;

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewpagerAdapter extends PagerAdapter{
    private List<View> views;
    private List<String> mtitles;
    public ViewpagerAdapter(List<View> views) {
        this.views = views;
    }
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;//得到页卡的数量
//        return views.size();
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        if (views.get(position%views.size())!=null){
            container.removeView(views.get(position%views.size()));//删除页卡
        }
        container.addView(views.get(position%views.size()));//添加页卡
        return views.get(position%views.size());
//        container.addView(views.get(position));
//        return  views.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
//        super.destroyItem(container, position, object);
//        container.removeView(views.get(position));//删除页卡
    }
}

ViewPagerActivity.java

public class ViewPagerTitleActivity extends Activity{
    private List<View> views;
    private LayoutInflater mInflater;
    private ViewPager viewpager;
    private ViewpagerAdapter mPagerViewAdapter;
    private List<ImageView> mImages;
    private ViewGroup mLinearLayout;
    private PagerTabStrip mPagerTabStrip;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager);
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        mLinearLayout= (ViewGroup) findViewById(R.id.Linearlayout_viewpager);
        // 将要分页显示的View装入数组中
        views = new ArrayList<View>();
        mInflater = getLayoutInflater();
             final View view1 = mInflater.inflate(R.layout.activity_pager_image, null);
            View view2 = mInflater.inflate(R.layout.activity_pager_text, null);
            View view3 = mInflater.inflate(R.layout.activity_pager_button, null);
        View view4 = mInflater.inflate(R.layout.activity_pager_image, null);
            views.add(view1);
            views.add(view2);
            views.add(view3);
        views.add(view4);
        mImages=new ArrayList<ImageView>();
        //将小圆点加入ViewGroup中
        for (int i=0;i<views.size();i++){
            ImageView img=new ImageView(this);//联系上下文
            //设置layoutParams的长和宽
            LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            //设置小圆点之间的间距
            layoutParams.setMargins(20,0,0,0);
            //将布局加载
            img.setLayoutParams(layoutParams);
            //设置校小圆点的样式
            img.setImageResource(R.drawable.page_indicator);
            //将小圆点加入list中
            mImages.add(img);
            //将带有小圆点的list加入ViewGroup中
            mLinearLayout.addView(img);
        };
        //设置初始状态下的第一张的小圆点的状态
        mImages.get(0).setImageResource(R.drawable.page_indicator_focused);
        mPagerViewAdapter = new ViewpagerAdapter(views);
        //设置Adapter
        viewpager.setAdapter(mPagerViewAdapter);
        //设置小圆点的点击事件
        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //设置所有的小圆点的初始状态
                for (ImageView img:mImages){
                    img.setImageResource(R.drawable.page_indicator);
                }
                //设置选中的小圆点的状态
                mImages.get(position%views.size()).setImageResource(R.drawable.page_indicator_focused);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        //设置初始第一张的位置
        viewpager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2/2%views.size());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

带有标题栏的Viewpager

Viewpager带有标题栏其实就是在xml文件内加上

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

设置标题懒得背景色

mPagerTabStrip.setBackgroundColor(Color.GRAY);

设置滑动杠的颜色

mPagerTabStrip.setTabIndicatorColor(Color.WHITE);

设置标题文本的颜色

 mPagerTabStrip.setTextColor(Color.BLUE);
 ```
 设置是否带有下划线
 ```
  mPagerTabStrip.setDrawFullUnderline(true);

简单地综合实例

activity_viewpager.xml

    <?xml version="1.0" encoding="utf-8"?>
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <android.support.v4.view.PagerTabStrip
            android:id="@+id/PagerTabStrip"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            />
    </android.support.v4.view.ViewPager>
    <LinearLayout
        android:id="@+id/Linearlayout_viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_margin="30dp"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >
    </LinearLayout>

ViewPagerTitleActivity.java

package com.example.administrator.myapplication;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import java.util.ArrayList;
import java.util.List;

import StudentAdapter.ViewpagerAdapter;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewPagerTitleActivity extends Activity{
    private List<View> views;
    private LayoutInflater mInflater;
    private ViewPager viewpager;
    private ViewpagerAdapter mPagerViewAdapter;
    private List<ImageView> mImages;
    private ViewGroup mLinearLayout;
    private PagerTabStrip mPagerTabStrip;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpager);
        viewpager = (ViewPager) findViewById(R.id.viewpager);
        mLinearLayout= (ViewGroup) findViewById(R.id.Linearlayout_viewpager);
        mPagerTabStrip= (PagerTabStrip)findViewById(R.id.PagerTabStrip);
        mPagerTabStrip.setBackgroundColor(Color.GRAY);//设置标题栏得背景色
        mPagerTabStrip.setTabIndicatorColor(Color.WHITE);//设置滑动杠的颜色
        mPagerTabStrip.setTextColor(Color.BLUE);//设置标题文本的颜色
        mPagerTabStrip.setDrawFullUnderline(true);//设置是否带有下划线
         //将要分页显示的View装入数组中
        views = new ArrayList<View>();
        mInflater = getLayoutInflater();
             final View view1 = mInflater.inflate(R.layout.activity_pager_image, null);
            View view2 = mInflater.inflate(R.layout.activity_pager_text, null);
            View view3 = mInflater.inflate(R.layout.activity_pager_button, null);
        View view4 = mInflater.inflate(R.layout.activity_pager_image, null);
            views.add(view1);
            views.add(view2);
            views.add(view3);
        views.add(view4);
        mImages=new ArrayList<ImageView>();
        //将小圆点加入ViewGroup中
        for (int i=0;i<views.size();i++){
            ImageView img=new ImageView(this);//联系上下文
            //设置layoutParams的长和宽
            LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            //设置小圆点之间的间距
            layoutParams.setMargins(20,0,0,0);
            //将布局加载
            img.setLayoutParams(layoutParams);
            //设置校小圆点的样式
            img.setImageResource(R.drawable.page_indicator);
            //将小圆点加入list中
            mImages.add(img);
            //将带有小圆点的list加入ViewGroup中
            mLinearLayout.addView(img);
        };
        //设置初始状态下的第一张的小圆点的状态
        mImages.get(0).setImageResource(R.drawable.page_indicator_focused);
        mPagerViewAdapter = new ViewpagerAdapter(views);
        //设置Adapter
        viewpager.setAdapter(mPagerViewAdapter);
        //设置小圆点的点击事件
        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //设置所有的小圆点的初始状态
                for (ImageView img:mImages){
                    img.setImageResource(R.drawable.page_indicator);
                }
                //设置选中的小圆点的状态
                mImages.get(position%views.size()).setImageResource(R.drawable.page_indicator_focused);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        //设置初始第一张的位置
        viewpager.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2/2%views.size());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

Viewpageradapter.java

package StudentAdapter;

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2015/9/5.
 */
public class ViewpagerAdapter extends PagerAdapter{
    private List<View> views;
    private List<String> mtitles;
    public ViewpagerAdapter(List<View> views) {
        this.views = views;
    }
    //重写getPageTitle()方法加入标题
    @Override
    public CharSequence getPageTitle(int position) {
        mtitles=new ArrayList<String>();
        mtitles.add("标题一");
        mtitles.add("标题二");
        mtitles.add("标题三");
        mtitles.add("标题四");
        return mtitles.get(position%views.size());
    }

    @Override
    public int getCount() {
        return Integer.MAX_VALUE;//得到页卡的数量
//        return views.size();
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        if (views.get(position%views.size())!=null){
            container.removeView(views.get(position%views.size()));//删除页卡
        }
        container.addView(views.get(position%views.size()));//添加页卡
        return views.get(position%views.size());
//        container.addView(views.get(position));
//        return  views.get(position);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
//        super.destroyItem(container, position, object);
//        container.removeView(views.get(position));//删除页卡
    }
}

这里写图片描述

Fragment碎片

为了更好地兼容android设备屏幕的不同,利用一种可以嵌入在UI中片段,能够更好的利用大屏幕的空间
利用标签在布局中添加碎片,其中android:name用来指定要添加碎片的类名,包名也要加上。如下:

<fragment
        class="com.example.administrator.myapplication.MySecondFragment"
        android:id="@+id/fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></fragment>

添加碎片的类要继承与Fragment

package com.example.administrator.myapplication;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.View;
import android.widget.Button;

/**
 * Created by Administrator on 2015/9/6.
 */
public class Fragment_Activity extends FragmentActivity  implements View.OnClickListener {
    private Button btn_fragment_button;
    private Button btn_fragment_text;
    private Button btn_fragment_image;
    private FragmentManager manager;
    private android.support.v4.app.FragmentTransaction transaction;
    private MyFragment mMyFragment;
    private MySecondFragment mMySecondFragment;
    private MyThirdFragment mMyThirdFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment);
        btn_fragment_button = (Button) findViewById(R.id.button_fragment_button);
        btn_fragment_text = (Button) findViewById(R.id.button_fragment_textview);
        btn_fragment_image = (Button) findViewById(R.id.button_fragment_imageView);
        btn_fragment_button.setOnClickListener(this);
        btn_fragment_text.setOnClickListener(this);
        btn_fragment_image.setOnClickListener(this);
        manager=getSupportFragmentManager();
        transaction=manager.beginTransaction();
        mMyFragment=new MyFragment();
        mMySecondFragment=new MySecondFragment();
        mMyThirdFragment=new MyThirdFragment();
        transaction.add(R.id.fragment,mMyFragment);
        transaction.add(R.id.fragment,mMySecondFragment);
        transaction.add(R.id.fragment,mMyThirdFragment);
        transaction.hide(mMyFragment);
        transaction.hide(mMySecondFragment);
        transaction.hide(mMyThirdFragment);
        transaction.commit();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button_fragment_button:
                transaction=manager.beginTransaction();
//                transaction.replace(R.id.fragment,new MyFragment());
                transaction.hide(mMySecondFragment);
                transaction.hide(mMyThirdFragment);
                transaction.show(mMyFragment);
                transaction.commit();
                break;
            case R.id.button_fragment_textview:
                transaction=manager.beginTransaction();
//                transaction.replace(R.id.fragment,new MySecondFragment());
                String
                text=mMyThirdFragment.getText();
                mMySecondFragment.setText(text);
                transaction.hide(mMyFragment);
                transaction.hide(mMyThirdFragment);
                transaction.show(mMySecondFragment);
                transaction.commit();
                break;
            case R.id.button_fragment_imageView:
                transaction=manager.beginTransaction();
//                transaction.replace(R.id.fragment,new MyThirdFragment());
                transaction.hide(mMyFragment);
                transaction.hide(mMySecondFragment);
                transaction.show(mMyThirdFragment);
                transaction.commit();
                break;
            default:
                break;
        }
    }
}

activity_main.xml文件

<?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">
    <FrameLayout
        android:id="@+id/fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <!--<fragment-->
        <!--class="com.example.administrator.myapplication.MySecondFragment"-->
        <!--android:id="@+id/fragment"-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="match_parent"></fragment>-->
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            >
    <Button
        android:id="@+id/button_fragment_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="fragment按钮"/>
    <Button
        android:id="@+id/button_fragment_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮文字"/>
    <Button
        android:id="@+id/button_fragment_imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮图片"/>
            </LinearLayout>
        </RelativeLayout>
    </FrameLayout>
</LinearLayout>

这里写图片描述

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章