第一阶段团队冲刺第五天

  设计了底部导航栏,经过了团队商讨决定设计四个导航栏和一个发布按钮,并使用fragment进行切换,这里遇到的问题是根据代码,每次切换都会重新add一个fragment,我根据自己的想法,根据show和hide方法自己进行更改,实现了切换时不会重新add一个新的fragment的功能。

在登录成功后,用户看到的应该是主界面的设计,因此我选择使用底部导航栏来增强用户的使用体验,在用户主界面,用户可以通过点击下方的底部导航栏实现界面的切换 。

主要的代码如下:

private void initView() {
mTabRadioGroup = findViewById(R.id.tabs_rg);
mFragmentSparseArray = new SparseArray<>();
//f1=new newfragment1(list.get(0));
F1=new FragmentFirst(list.get(0));
mFragmentSparseArray.append(R.id.today_tab,F1);
/*
mFragmentSparseArray.append(R.id.record_tab, new FragmentSecond());
mFragmentSparseArray.append(R.id.contact_tab, new FragmentThird(MYID));
mFragmentSparseArray.append(R.id.settings_tab, new firstFragment());

*/
mTabRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// 具体的fragment切换逻辑可以根据应用调整,例如使用show()/hide()
// getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
// mFragmentSparseArray.get(checkedId)).commit();
FragmentTransaction transaction=getSupportFragmentManager().beginTransaction();
//hidefrag(transaction);
if(mFragmentSparseArray.get(checkedId)==null){
if(checkedId==R.id.record_tab){
mFragmentSparseArray.append(R.id.record_tab, new FragmentSecond(list.get(0)));
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,
mFragmentSparseArray.get(R.id.record_tab)).commit();
}
else if(checkedId==R.id.contact_tab){
mFragmentSparseArray.append(R.id.contact_tab, new FragmentThird(MYID,MYTP,MYNICHENG));
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,
mFragmentSparseArray.get(R.id.contact_tab)).commit();
}
else if(checkedId==R.id.settings_tab){

Fragment f=new FragmentForth(list.get(0));
mFragmentSparseArray.append(R.id.settings_tab, f);
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,
mFragmentSparseArray.get(R.id.settings_tab)).commit();

}
}
hidefrag(transaction);
transaction.show(mFragmentSparseArray.get(checkedId)).commit();

}
});
// 默认显示第一个
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container,
mFragmentSparseArray.get(R.id.today_tab)).commit();
addbut=(ImageView)findViewById(R.id.sign_iv);
addbut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(User.this,Publishother.class);
intent.putExtra("MYID",list.get(0).getId());
intent.putExtra("MYTP",list.get(0).getTupian());
intent.putExtra("MYNICHENG",list.get(0).getNicheng());
startActivity(intent);
}
});
}
public void hidefrag(FragmentTransaction fra){
if(mFragmentSparseArray.get(R.id.today_tab)!=null){
fra.hide(mFragmentSparseArray.get(R.id.today_tab));
}
if(mFragmentSparseArray.get(R.id.record_tab)!=null){
fra.hide(mFragmentSparseArray.get(R.id.record_tab));
}
if(mFragmentSparseArray.get(R.id.contact_tab)!=null){
fra.hide(mFragmentSparseArray.get(R.id.contact_tab));
}
if(mFragmentSparseArray.get(R.id.settings_tab)!=null){
fra.hide(mFragmentSparseArray.get(R.id.settings_tab));
}
}
原文地址:https://www.cnblogs.com/ruangongwangxiansheng/p/14912604.html