MainActivity.java方案一:通过FragmentTransaction.replace反复添加、替换生成控件
public class MainActivity extends AppCompatActivity {
private ContactFragment contactFragment=new ContactFragment();
private InternetFragment internetFragment=new InternetFragment();
private TelephoneFragment telephoneFragment=new TelephoneFragment();
private FragmentManager manager;
private FragmentTransaction transaction;
private Fragment currentFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView title=findViewById(R.id.main_title_tv);
Button tele=findViewById(R.id.main_btn_tel);
tele.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentSwitch(telephoneFragment);
title.setText("Telephone");
}
});
Button cont=findViewById(R.id.main_btn_con);
cont.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentSwitch(contactFragment);
title.setText("Contact");
}
});
Button inte=findViewById(R.id.main_btn_int);
inte.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentSwitch(internetFragment);
title.setText("Internet");
}
});
}
private void FragmentSwitch(Fragment fg) {
manager=getSupportFragmentManager();
transaction=manager.beginTransaction();
transaction.replace(R.id.main_layout_content,fg);
transaction.commit();
}
}
MainActivity.java方案二,通过FragmentTransaction.hide(I)、show()方法隐藏和显示进行界面切换与转换
public class MainActivity extends AppCompatActivity {
private ContactFragment contactFragment=new ContactFragment();
private InternetFragment internetFragment=new InternetFragment();
private TelephoneFragment telephoneFragment=new TelephoneFragment();
private FragmentManager manager;
private FragmentTransaction transaction;
private Fragment currentFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView title=findViewById(R.id.main_title_tv);
Button tele=findViewById(R.id.main_btn_tel);
tele.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//FragmentSwitch(telephoneFragment);
FragmentHideShwo(telephoneFragment);
title.setText("Telephone");
}
});
Button cont=findViewById(R.id.main_btn_con);
cont.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//FragmentSwitch(contactFragment);
FragmentHideShwo(contactFragment);
title.setText("Contact");
}
});
Button inte=findViewById(R.id.main_btn_int);
inte.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//FragmentSwitch(internetFragment);
FragmentHideShwo(internetFragment);
title.setText("Internet");
}
});
//initial fragments
manager=getSupportFragmentManager();
transaction=manager.beginTransaction();
transaction.show(contactFragment);
transaction.hide(internetFragment);
transaction.hide(telephoneFragment);
transaction.commit();
currentFragment=contactFragment;
}
private void FragmentSwitch(Fragment fg) {
manager=getSupportFragmentManager();
transaction=manager.beginTransaction();
transaction.replace(R.id.main_layout_content,fg);
transaction.commit();
}
private void FragmentHideShwo(Fragment fg){
// show or hide fragments to improve the stablility and reduce costs
manager=getSupportFragmentManager();
transaction=manager.beginTransaction();
if(!fg.isAdded()){
transaction.hide(currentFragment);
transaction.add(R.id.main_layout_content,fg);
}else{
transaction.hide(currentFragment);
transaction.show(fg);
}
currentFragment=fg;
transaction.commit();
}
}