Fragment - 用法+demo

Fragment参考

好的博客,时内容太多:

Fragment理解上           Fragment理解下   

Fragment详解1            Fragment详解2                          

小demo:

需求:

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

图:

Fragment - 用法+demo_第1张图片

代码:

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




    

    

        

            

            
        

        

            

            
        

        

            

            
        
    



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




    



简单实现完成。

你可能感兴趣的:(【,Android,暂无分类,】,【,Android,基础开发,】)