安卓activity中fragment替换问题

顧曲周郎 2016-06-10 09:40:01
新手一枚,听说这里大神很多,特来求助
主界面activity里底部是包含4个radiobutton的导航栏,4个button对应四个fragment。
现在要做的是,第四个button对应是登录界面fragment,登录后显示个人信息界面的fragment。
我代码写出来后,替换后第一个button和第四个button对应的fragment都变成了 个人信息界面的button,而且从其他跳转到主界面的activity时,第四个button对应的fragment又变成了登录界面fragment了。
不知道我描述清楚不,请大神帮忙看下代码,问题出在哪里了。
主界面activity代码如下。
public class MainActivity extends FragmentActivity {
private RadioButton rb_index,rb_pro,rb_find,rb_me;
private FindFragment findFragment;
private LoginFragment loginFragment;
private ProjectFragment projectFragment;
private IndexFragment indexFragment;
private MycenterFragment mycenterFragment;
public FrameLayout fragment_container;
private long exitTime = 0;
private FragmentManager fManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fManager = getSupportFragmentManager();
getView();
setView();
// 设置rb_index默认选中
rb_index.performClick();
}
//获取控件
private void getView() {
rb_index= (RadioButton) findViewById(R.id.rb_index);
rb_pro= (RadioButton) findViewById(R.id.rb_pro);
rb_find = (RadioButton) findViewById(R.id.rb_find);
rb_me= (RadioButton) findViewById(R.id.rb_me);
fragment_container= (FrameLayout) findViewById(R.id.fragment_container);
}
// 设置监听
private void setView() {
MyListener myListener =new MyListener();
rb_index.setOnClickListener(myListener);
rb_pro.setOnClickListener(myListener);
rb_find.setOnClickListener(myListener);
rb_me.setOnClickListener(myListener);
}
//重置所有button的选中状态
private void setSelected(){
rb_index.setSelected(false);
rb_pro.setSelected(false);
rb_find.setSelected(false);
rb_me.setSelected(false);
}
//隐藏所有Fragment
private void hideAllFragment(FragmentTransaction fragmentTransaction){
if(findFragment != null){fragmentTransaction.hide(findFragment);}
if(loginFragment != null){fragmentTransaction.hide(loginFragment);}
if(projectFragment != null){fragmentTransaction.hide(projectFragment);}
if(indexFragment != null){fragmentTransaction.hide(indexFragment);}
if(mycenterFragment != null){fragmentTransaction.hide(mycenterFragment);}
}

class MyListener implements OnClickListener {
@Override
public void onClick(View v) {
FragmentTransaction fTransaction = fManager.beginTransaction();
hideAllFragment(fTransaction);
switch (v.getId()) {
case R.id.rb_index:
setSelected();
rb_index.setSelected(true);
if(indexFragment == null){
indexFragment = new IndexFragment();
fTransaction.add(R.id.fragment_container,indexFragment);
}else{
fTransaction.show(indexFragment);
}
break;
case R.id.rb_pro:
setSelected();
rb_pro.setSelected(true);
if(projectFragment == null){
projectFragment = new ProjectFragment();
fTransaction.add(R.id.fragment_container,projectFragment);
}else{
fTransaction.show(projectFragment);
}
break;
case R.id.rb_find:
setSelected();
rb_find.setSelected(true);
if(findFragment == null){
findFragment = new FindFragment();
fTransaction.add(R.id.fragment_container,findFragment);
}else{
fTransaction.show(findFragment);
}
break;
case R.id.rb_me:
setSelected();

if(loginFragment == null){
loginFragment = new LoginFragment();
fTransaction.add(R.id.fragment_container,loginFragment);
}else{
fTransaction.show(loginFragment);
}

break;
}
fTransaction.commit();
}
}
登录界面fragment中替换fragment部分的代码如下
//个人信息fragment
MycenterFragment mycenterFragment =new MycenterFragment();
//登录界面的fragment
LoginFragment loginFragment=new LoginFragment();
// 开启事务
FragmentTransaction transaction =getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, mycenterFragment);
transaction.show(mycenterFragment);
transaction.commit();
代码风格不好,如果大神能指点下,不胜感激!!
...全文
196 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧