fragment 切换时的优化一:

package com.pcf.fragment.activity;

import android.content.SharedPreferences;
import android.sax.RootElement;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.Toast;

import com.pcf.fragment.R;
import com.pcf.fragment.fragment.Frafment_A;
import com.pcf.fragment.fragment.Frafment_B;
import com.pcf.fragment.fragment.Frafment_C;
import com.pcf.fragment.fragment.Frafment_D;

import java.util.Stack;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {


    LinearLayout fragment_layout;
    Fragment fgOne = null;
    Fragment fgTwo = null;
    Fragment fgThree = null;
    Fragment fgFour = null;
    Fragment currentFg = null;
    FragmentTransaction ft = null;
    FragmentManager fm = null;
    Button button_1, button_2, button_3, button_4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initView();
        initeLinstener();
    }



    public void initView() {

        setContentView(R.layout.activity_main);
        fragment_layout = (LinearLayout) findViewById(R.id.fragment_layout);
        fm = getSupportFragmentManager();
        ft = fm.beginTransaction();
        fgOne = new Frafment_A();
        fgTwo = new Frafment_B();
        fgThree = new Frafment_C();
        fgFour = new Frafment_D();

        //初始化布局,第一次加载进来显示的fragment,fragmentA
        currentFg = fgOne;
        if (!currentFg.isAdded()){
            ft.add(R.id.fragment_layout,currentFg);
            Log.i("TAG","currentFg加载");
        }else {
            ft.show(currentFg);
        }
        ft.commit();



        button_1 = (Button) findViewById(R.id.button_1);
        button_2 = (Button) findViewById(R.id.button_2);
        button_3 = (Button) findViewById(R.id.button_3);
        button_4 = (Button) findViewById(R.id.button_4);

    }

    public void initeLinstener() {
        button_1.setOnClickListener(this);
        button_2.setOnClickListener(this);
        button_3.setOnClickListener(this);
        button_4.setOnClickListener(this);

    }


    @Override
    public void onClick(View v) {
        ft = fm.beginTransaction();
        switch (v.getId()) {

            case R.id.button_1:
                changeFragment(fgOne);
                break;
            case R.id.button_2:
                changeFragment(fgTwo);
                break;
            case R.id.button_3:
                changeFragment(fgThree);
                break;
            case R.id.button_4:
                changeFragment(fgFour);
                break;

        }
    }


    /***
     * 切换布局调用的方法
     * 如果该fragment已经加载,就直接hide当前的fragment然后显示该fragment,避免重复的加载fragment
     * 
     * @param fg
     */
    public void changeFragment(Fragment fg) {
        if (!fg.isAdded()) {
            ft.hide(currentFg).add(R.id.fragment_layout, fg);
        } else {
            ft.hide(currentFg).show(fg);
        }

        //全局变量,记录当前的currentFg;
        currentFg = fg;
        ft.commit();

    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值