Fragment - 用法+demo
16lz
2021-01-26
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"?>
简单实现完成。
更多相关文章
- android Run模式也会出现"Waiting for debugger"的解决方法
- Android(安卓)setContentView 源码解析
- 布局中@null的代码实现方式
- Android系统java层次service实现
- OkHttp学习系列二:谈谈Android中使用的坑
- 4 行代码实现 ANDROID 快速文件下载
- ART模式下dex2oat出错导致系统无法正常启动
- AOP在Android中最佳用法
- JPush+SAE+J2EE实现微信公众平台账号服务