各位大牛好,小弟最近在使用SlidingMenu,左侧菜单切换的时候每次都重新加载一个新的Fragement,这样写跳到另一个菜单在点回来是就有问题了,加载不出来数据
@SuppressLint("NewApi"),代码是这样的,我现在想实现类似网易的那种,当第一次点另一个菜单的时候加载新的fragement,以后再点的时候就不要加载了,直接显示之前加载的,不想每次点击就new 一个Fragement,望各位大神不吝赐教,先谢过了...
@Override
public void selectItem(int position, String title) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new ReportFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.menu_frame_content, fragment).commit();
// update selected item and title, then close the drawer
setTitle(title);
mSlidingMenu.showContent();
} else {
Log.e("MainActivity", "Error in creating fragment");
}
}
------解决方案--------------------
Fragment设置成为全局变量
------解决方案--------------------
解决了吗??
------解决方案--------------------
判断是否已经存在了 不存在的时候才new
------解决方案--------------------
ADT升级下,最新版本的自动生成fragment了,就不会有问题了,,,
------解决方案--------------------
当然如果你要用老版本,请看这段代码
if (savedInstanceState == null) {//== null的时候新建Fragment1
contentFragment = new Fragment1();
} else {//不等于null,直接get出来
//不等于null,找出之前保存的当前Activity显示的Fragment
contentFragment = getSupportFragmentManager().getFragment(savedInstanceState, "contentFragment");
}
//设置内容Fragment
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, contentFragment)
.commit();
------解决方案--------------------
将fragment存到变量中,先判断有没有这个fragment,如果有直接return,没有的话再new一个
------解决方案--------------------
把Fragment 放到一个List中,每次从List读取。比如TabHost它就是把TabSpec放到List中,借鉴下看行不哈:
private List<TabSpec> mTabSpecs = new ArrayList<TabSpec>(2);
------解决方案--------------------
恩,肯定要改代码的,只是说方便些,,,
------解决方案--------------------
关注