解决方案 »
- 在intel架构下安装了Oracle vm+Android x86 4.04 如何装Busybox
- 如何获取ImageView图片的资源ID?
- 豌豆荚和魔乐软件中的ApkInstaller.exe获取.apk版本信息原理
- android2.2中无法正常显示地理信息的网页
- android 学习之路
- 请大神看看这个问题怎么解决?
- 自定义录像,在重复的关闭开启录像后会调用onPause
- 求助!如何用Android系统扫描复杂二维码?
- Spinner绑定数据成功可以选择以后没有反应
- 两个Android手机通过OTG线+Usb线连接,可连接,但不无法收发数据
- Android端通过有线网查询局域网内其他设备的IP地址和MAC地址
- 安卓虚拟机开启突然变很慢了
下载看了一下,代码写的很挫啊 ,加载完成之后,Fragment生命周期方法全部被废除了,根本无法使用
大神
这样的话 会不会导致 Fragment生命周期方法全部被废除? 有相关的Demo吗
大神
这样的话 会不会导致 Fragment生命周期方法全部被废除? 有相关的Demo吗肯定不会了public class FragmentHolder {
private FragmentManager fragmentManager; private String fragmentTag = "fragmentTag"; private static Fragment fragment1, fragment2, fragment3; public FragmentHolder(FragmentManager fragmentManager) {
super();
this.fragmentManager = fragmentManager;
}
private HashMap<String,Fragment> mfragment=new HashMap<String,Fragment>();
/**
* 无切换效果
*
* @param posId
*/
public void showFragment(int posId,String classId) {
Fragment fragment = getFragment(posId,classId);
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.fram_content, fragment);
transaction.commit();
} /**
* left in/left out 切换效果
*
* @param posId
*/
public void switchFragment(int posId,String classId) {
Fragment fragment = getFragment(posId,classId);
Bundle bundle = new Bundle();
bundle.putString("classId", classId);
FragmentTransaction fragmentTransaction = this.fragmentManager
.beginTransaction();
if (this.fragmentManager.findFragmentByTag(fragmentTag) == null) {
fragmentTransaction.add(R.id.fram_content, fragment, fragmentTag);
} else {
fragmentTransaction.setCustomAnimations(R.anim.push_right_in,
R.anim.push_right_out);
fragmentTransaction.detach(this.fragmentManager
.findFragmentByTag(fragmentTag));
fragmentTransaction.add(R.id.fram_content, fragment, fragmentTag);
}
if (fragmentTransaction != null && !fragmentTransaction.isEmpty())
fragmentTransaction.commit();
} private Fragment getFragment(int posId,String Id) {
Bundle bundle=new Bundle();
bundle.putString("classId", Id);
switch (posId) {
case R.id.xiangxi_tab:
if (mfragment.get("xiangxi") == null) {
fragment1 = new XiangQingFragment();
fragment1.setArguments(bundle);
mfragment.put("xiangxi", fragment1);
}
return mfragment.get("xiangxi");
case R.id.biji_tab:
if (mfragment.get("biji") == null) {
fragment2 = new BiJiFragment();
fragment2.setArguments(bundle);
mfragment.put("biji", fragment2);
}
return mfragment.get("biji");
case R.id.zhangjie_tab:
if (mfragment.get("zhangjie") == null) {
fragment3 = new ZhangJieFragment();
fragment3.setArguments(bundle);
mfragment.put("zhangjie", fragment3);
}
return mfragment.get("zhangjie");
default:
break;
}
return null;
}
}
* 设置当前的Fragment
*
* @param index
*/
public void setCurrentFragment(int... index) { if (index.length > 0) {
fragmentIndex = index[0];
}
FragmentTransaction ftd = getSupportFragmentManager()
.beginTransaction();
switch (fragmentIndex) {
case HOME_FRAGMENT:
if (f1 == null) {
f1 = new FragmentHome();
}
ftd.replace(R.id.content_view, f1);
break;
case BANK_FRAGMENT:
if (f2 == null) {
f2 = new FragmentBank();
}
f2.trans(this);
ftd.replace(R.id.content_view, f2);
break;
case ACCOUNT_FRAGMENT:
if (f3 == null) {
f3 = new FragmentAccountNew();
}
f3.trans(this);
ftd.replace(R.id.content_view, f3);
break;
case MORE_FRAGMENT:
if (f4 == null) {
f4 = new FragmentMore();
}
f4.trans(this);
ftd.replace(R.id.content_view, f4);
break; } ftd.commit();
}这样每次从其中一个fragment进入activity时,只会触发该fragment的onpause和onstop。我的下方导航用的radiogroup,然后在它的oncheckedchang监听中
OnCheckedChangeListener checkedChange = new OnCheckedChangeListener() { @Override
public void onCheckedChanged(RadioGroup group, int checkedId) { int index = HOME_FRAGMENT;
switch (checkedId) {
case R.id.tab_rb_1:
index = HOME_FRAGMENT;
break;
case R.id.tab_rb_2:
index = BANK_FRAGMENT;
break;
case R.id.tab_rb_3:
index = ACCOUNT_FRAGMENT;
break;
case R.id.tab_rb_4:
index = MORE_FRAGMENT;
break;
}
setCurrentFragment(index);
}
};