fragment 切换时的优化一:

来源:互联网 发布:淘宝查号网 编辑:程序博客网 时间:2024/04/29 21:27
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
原创粉丝点击