SlidingMenu 左侧菜单切换

一条固执的鱼 2014-04-23 05:38:11
各位大牛好,小弟最近在使用SlidingMenu,左侧菜单切换的时候每次都重新加载一个新的Fragement,这样写跳到另一个菜单在点回来是就有问题了,加载不出来数据
@SuppressLint("NewApi")
@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");
}
}
,代码是这样的,我现在想实现类似网易的那种,当第一次点另一个菜单的时候加载新的fragement,以后再点的时候就不要加载了,直接显示之前加载的,不想每次点击就new 一个Fragement,望各位大神不吝赐教,先谢过了...
...全文
270 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
12345987 2014-05-14
  • 打赏
  • 举报
回复
楼主可以留在自己的QQ号么,有个问题想请教你一下。我也遇到一个和你类似的问题,希望得到你的指点。
一条固执的鱼 2014-05-05
  • 打赏
  • 举报
回复
if(fragment != mContent){
				if(!fragment.isAdded()){
					getSupportFragmentManager().beginTransaction().hide(mContent)
					.add(R.id.menu_frame_content, fragment).commit();
				}else{
					getSupportFragmentManager().beginTransaction().hide(mContent)
					.show(fragment).commit();
				}
				mContent = fragment;
			}
这样解决了
atlasGS 2014-04-25
  • 打赏
  • 举报
回复
关注
一条固执的鱼 2014-04-24
  • 打赏
  • 举报
回复
引用 11 楼 heaimnmn 的回复:
引用 10 楼 jbanker 的回复:
引用 5 楼 heaimnmn 的回复:
ADT升级下,最新版本的自动生成fragment了,就不会有问题了,,,
升级就可以了么,但是这个地方还是得用代码实现,代码还是要改的
恩,肯定要改代码的,只是说方便些,,,
嗯,谢谢!
一条固执的鱼 2014-04-24
  • 打赏
  • 举报
回复
引用 8 楼 smallkonrad 的回复:
把Fragment 放到一个List中,每次从List读取。比如TabHost它就是把TabSpec放到List中,借鉴下看行不哈:

private List<TabSpec> mTabSpecs = new ArrayList<TabSpec>(2);
嗯,谢谢!
一条固执的鱼 2014-04-24
  • 打赏
  • 举报
回复
引用 2 楼 jack_wolf_ 的回复:
Fragment设置成为全局变量
嗯,之前没有设置全局变量,
@Override
public void selectItem(int position, String title) {
// update the main content by replacing fragments

Fragment fragment = null;
switch (position) {
case 0:
fragment = homeFragment;
break;
case 1:
if(null == reportFragment){
reportFragment = new ReportFragment();
}
fragment = reportFragment;
break;
case 2:
if(null == dataFragment){
dataFragment = new DataFragment();
}
fragment = dataFragment;
break;
default:
现在是这么写的,但是虽然没有重新new Fragment 但是每次返回去的时候又重新加载了,而且如果是多Tab页面的话,会显示空白,如图圈着的都是空白也不会加载,除非滑动是它销毁后重新创建视图才会重新加载,我看网易的就没有重新加载,就好像调用了toggle();一样,很平静的就返回去了
哎,真难 2014-04-24
  • 打赏
  • 举报
回复
引用 10 楼 jbanker 的回复:
引用 5 楼 heaimnmn 的回复:
ADT升级下,最新版本的自动生成fragment了,就不会有问题了,,,
升级就可以了么,但是这个地方还是得用代码实现,代码还是要改的
恩,肯定要改代码的,只是说方便些,,,
一条固执的鱼 2014-04-24
  • 打赏
  • 举报
回复
引用 5 楼 heaimnmn 的回复:
ADT升级下,最新版本的自动生成fragment了,就不会有问题了,,,
升级就可以了么,但是这个地方还是得用代码实现,代码还是要改的
一条固执的鱼 2014-04-24
  • 打赏
  • 举报
回复
引用 6 楼 heaimnmn 的回复:
当然如果你要用老版本,请看这段代码
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();
这段是写在onCreate方法里的吧,可是菜单切换的时候调用的是selectItem这个方法
erytbc 2014-04-24
  • 打赏
  • 举报
回复
把Fragment 放到一个List中,每次从List读取。比如TabHost它就是把TabSpec放到List中,借鉴下看行不哈:

private List<TabSpec> mTabSpecs = new ArrayList<TabSpec>(2);
  • 打赏
  • 举报
回复
将fragment存到变量中,先判断有没有这个fragment,如果有直接return,没有的话再new一个
哎,真难 2014-04-24
  • 打赏
  • 举报
回复
当然如果你要用老版本,请看这段代码
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();
哎,真难 2014-04-24
  • 打赏
  • 举报
回复
ADT升级下,最新版本的自动生成fragment了,就不会有问题了,,,
517967268 2014-04-24
  • 打赏
  • 举报
回复
判断是否已经存在了 不存在的时候才new
erytbc 2014-04-23
  • 打赏
  • 举报
回复
解决了吗??
映映 2014-04-23
  • 打赏
  • 举报
回复
Fragment设置成为全局变量
一条固执的鱼 2014-04-23
  • 打赏
  • 举报
回复
左侧切换菜单

80,351

社区成员

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

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