博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中Fragment点击切换与添加ViewPager滑动切换
阅读量:4188 次
发布时间:2019-05-26

本文共 6153 字,大约阅读时间需要 20 分钟。

我想大家对这些都不陌生了吧,我还是大概说一下吧,哈哈哈哈。。。。。。

首先介绍一下Fragment是碎片,

为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像Activity一样包含布局。Fragment通常是嵌套在Activity中使用的,现在想象这种场景:有两个Fragment,Fragment 1包含了一个ListView,每行显示一本书的标题。Fragment 2包含了TextView和ImageView,来显示书的详细内容和图片。

而使用Fragment 我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理!从而可以更加方便的在 运行过程中动态地更新Activity的用户界面!

另外Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity 被destory销毁了,他也会跟着销毁!

别的不再多说,直接贴代码。。。。。。

这里写代码片xml布局代码
这里写代码片fragmenta代码
这里写代码片fragmentb代码
这里写代码片Fragment_a代码package com.example.cn.bgs.fragmentviewpagerdemoa;import android.R.color;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class Fragment_a extends Fragment{
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v=View.inflate(getActivity(),R.layout.fragmenta, null); return v; }}
这里写代码片Fragment_b代码package com.example.cn.bgs.fragmentviewpagerdemoa;import android.R.color;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class Fragment_b extends Fragment{
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View v=View.inflate(getActivity(),R.layout.fragmentb, null); return v; }}
这里写代码片MainActivity代码package com.example.cn.bgs.fragmentviewpagerdemoa;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.content.Context;import android.graphics.Color;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.app.FragmentTransaction;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends FragmentActivity implements OnClickListener,        OnPageChangeListener {
private Button mBtn1, mBtn2; private Fragment_a fa; private Fragment_b fb; private FragmentManager manager; private ViewPager pager; private List
list=new ArrayList
(); private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);// manager = getSupportFragmentManager();// FragmentTransaction transaction = manager.beginTransaction();// fa = new Fragment_a();// transaction.add(R.id.mcontainer, fa);// transaction.commit(); initView(); } private void initView() { mBtn1 = (Button) findViewById(R.id.mBtn1); mBtn2 = (Button) findViewById(R.id.mBtn2); list.add(new Fragment_a()); list.add(new Fragment_b()); pager = (ViewPager) findViewById(R.id.pager); mBtn1.setOnClickListener(this); mBtn2.setOnClickListener(this); pager.setOnPageChangeListener(this); adapter = new MyAdapter(getSupportFragmentManager(), list); pager.setAdapter(adapter); } // @Override // public void onClick(View v) {
// hideAll(); // FragmentTransaction transaction = manager.beginTransaction(); // switch (v.getId()) {
// // case R.id.mBtn1: // if (fa == null) {
// fa = new Fragment_a(); // transaction.add(R.id.mcontainer, fa); // } else {
// transaction.show(fa); // } // // break; // case R.id.mBtn2: // if (fb == null) {
// fb = new Fragment_b(); // transaction.add(R.id.mcontainer, fb); // } else {
// transaction.show(fb); // } // break; // } // transaction.commit(); // // } // // public void hideAll() {
// FragmentTransaction transaction = manager.beginTransaction(); // if (fa != null) {
// transaction.hide(fa); // } // if (fb != null) {
// transaction.hide(fb); // } // transaction.commit(); // } @Override public void onClick(View v) { switch (v.getId()) { case R.id.mBtn1: mBtn1.setTextColor(Color.GREEN); pager.setCurrentItem(0, false); break; case R.id.mBtn2: mBtn2.setTextColor(Color.GREEN); pager.setCurrentItem(1, false); break; } } class MyAdapter extends FragmentPagerAdapter { private List
list; public MyAdapter(FragmentManager fm, List
list) { super(fm); this.list = list; } @Override public Fragment getItem(int arg0) { // TODO Auto-generated method stub return list.get(arg0); } @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageSelected(int arg0) { clear(); switch (arg0) { case 0: mBtn1.setTextColor(Color.GREEN); pager.setCurrentItem(0, false); break; case 1: mBtn2.setTextColor(Color.GREEN); pager.setCurrentItem(1, false); break; } } private void clear() { mBtn1.setTextColor(Color.GRAY); mBtn2.setTextColor(Color.GRAY); }}红色注销的是切换的代码

别的不再多说,效果也就这样

这里写图片描述
好了,一切都结束了。。。。。。

你可能感兴趣的文章
我们需要实践来建立过程
查看>>
人们不喜欢过程
查看>>
UML很棒但是过于庞大了
查看>>
虚拟大教堂的探索
查看>>
使用xml语言自动导入测试需求到开源测试工具testlink
查看>>
软件测试时代发展5周年的一个总结
查看>>
软件测试工程师的职业发展综述
查看>>
第33次(北京)软件测试交流会定于11月4日(周日)在北京举行
查看>>
关于软件测试人员绩效考核的讨论
查看>>
国内质量意识的变更过程
查看>>
测试时代软件测试交流会4月15日北京举行
查看>>
测试时代论坛中测试新手的职业发展困惑
查看>>
软件测试过程的监控方法
查看>>
软件企业质量保证的基石――QA、QC的良性协作
查看>>
TDD的三条规则(中英对照)
查看>>
敏捷软件开发基础:进行有效的客户协作
查看>>
敏捷软件开发基础: 持续集成环境的构建
查看>>
A draft TOC of 嵌入式电信软件敏捷开发实践
查看>>
"Balancing Agility and Discipline" 中文版——《平衡敏捷与规范》终于要出版了
查看>>
软件思考系列之二
查看>>