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(); } }
fragment 切换时的优化一:
最新推荐文章于 2021-11-09 16:19:53 发布