Fragment参考

好的博客,时内容太多:

Fragment理解上           Fragment理解下   

Fragment详解1            Fragment详解2                          

小demo:

需求:

MainActivity作为Fragment的载体,点击下面的首页、理财和账户切换自己的Fragment。

图:


代码:

MainActivity代码:这里使用了FragmentManager的hide和show方法,没有使用replace

package baofu.wallet;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.LinearLayout;import baofu.wallet.widget.ui.fragment.IndexFragment;import baofu.wallet.widget.ui.fragment.LiCaiFragment;import baofu.wallet.widget.ui.fragment.MineFragment;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private LinearLayout ll_index;    private LinearLayout ll_licai;    private LinearLayout ll_mine;    private IndexFragment indexFragment;    private LiCaiFragment liCaiFragment;    private MineFragment mineFragment;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ll_index = (LinearLayout) findViewById(R.id.ll_index);        ll_licai = (LinearLayout) findViewById(R.id.ll_licai);        ll_mine = (LinearLayout) findViewById(R.id.ll_mine);        indexFragment = new IndexFragment();        liCaiFragment = new LiCaiFragment();        mineFragment = new MineFragment();        FragmentManager fm = getFragmentManager();        FragmentTransaction ft = fm.beginTransaction();        ft.add(R.id.fl_top, indexFragment, "index");        ft.add(R.id.fl_top, liCaiFragment, "licai");        ft.add(R.id.fl_top, mineFragment, "mine");        ft.show(indexFragment);        ft.commit();        setClickListener();    }    //注册点击监听    private void setClickListener() {        ll_index.setOnClickListener(this);        ll_licai.setOnClickListener(this);        ll_mine.setOnClickListener(this);    }    @Override    public void onClick(View v) {        FragmentManager fm = getFragmentManager();        FragmentTransaction ft = fm.beginTransaction();        switch (v.getId()) {            case R.id.ll_index:                indexFragment = (IndexFragment) fm.findFragmentByTag("index");                ft.hide(liCaiFragment);                ft.hide(mineFragment);                ft.show(indexFragment).commit();                break;            case R.id.ll_licai:                liCaiFragment = (LiCaiFragment) fm.findFragmentByTag("licai");                ft.hide(indexFragment);                ft.hide(mineFragment);                ft.show(liCaiFragment).commit();                break;            case R.id.ll_mine:                mineFragment = (MineFragment) fm.findFragmentByTag("mine");                ft.hide(indexFragment);                ft.hide(liCaiFragment);                ft.show(mineFragment).commit();                break;        }    }}

activity_main.xml 这里使用FragmentLayout来存放三个Fragment

<?xml version="1.0" encoding="utf-8"?>                                                                                                                                    

Fragment,这里只列出了MineFragment,其它两个雷同

MineFragment代码:

package baofu.wallet.widget.ui.fragment;import android.app.Fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import baofu.wallet.R;/** * 我的 * Created by zst on 2017/3/2. */public class MineFragment extends Fragment {    private List> dataSourceList = new ArrayList>();    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_mine, container, false);        return view;    }}

fragment_mine.xml

<?xml version="1.0" encoding="utf-8"?>    

简单实现完成。

更多相关文章

  1. android Run模式也会出现"Waiting for debugger"的解决方法
  2. Android(安卓)setContentView 源码解析
  3. 布局中@null的代码实现方式
  4. Android系统java层次service实现
  5. OkHttp学习系列二:谈谈Android中使用的坑
  6. 4 行代码实现 ANDROID 快速文件下载
  7. ART模式下dex2oat出错导致系统无法正常启动
  8. AOP在Android中最佳用法
  9. JPush+SAE+J2EE实现微信公众平台账号服务

随机推荐

  1. C# 8.0 正式发布:Visual Studio 2019 支持
  2. Python数据分析相关面试题!Python学习教
  3. 别把产品经理和项目经理搞混了
  4. Python入门之迭代器与生成器的区别
  5. Python基础教程:5种方法实现反转字符串
  6. Kubernetes + Knative :玩转云上弹幕部署
  7. 数据分析思维培养
  8. CENTOS7用户管理和文件权限管理
  9. 虚函数的内部实现
  10. 关于流媒体的简介及技术梳理