首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

关于Fragment的有关问题

2013-08-13 
关于Fragment的问题在用Fragment+TabHost制作分页,遇到了一个问题。主Activity(继承自FragmentActivity的类

关于Fragment的问题
在用Fragment+TabHost制作分页,遇到了一个问题。
主Activity(继承自FragmentActivity的类)中TabHost的监听器如下:


TabHost.OnTabChangeListener tabChangeListener = new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
Debug.v(tabId, "onTabChanged   "+tabId);

/** 碎片管理 */
menuFragment = (MenuFragment) fm.findFragmentByTag("menu");
giftFragment = (GiftFragment) fm.findFragmentByTag("gift");
proFragment = (ProductFragment) fm.findFragmentByTag("product");
myselfFragment = (MyselfFragment) fm.findFragmentByTag("myself");
moreFragment = (MoreFragment) fm.findFragmentByTag("more");
ft = fm.beginTransaction();

/** 如果存在Detaches掉 */
if (menuFragment != null)
ft.detach(menuFragment);

/** 如果存在Detaches掉 */
if (giftFragment != null)
ft.detach(giftFragment);

/** 如果存在Detaches掉 */
if (proFragment != null)
ft.detach(proFragment);

/** 如果存在Detaches掉 */
if (myselfFragment != null)
ft.detach(myselfFragment);

/** 如果存在Detaches掉 */
if (moreFragment != null)
ft.detach(moreFragment);

/** 如果当前选项卡是home */
if (tabId.equalsIgnoreCase("menu")) {
isTabMenu();
CURRENT_TAB = TAB_MENU;

/** 如果当前选项卡是wall */
} else if (tabId.equalsIgnoreCase("gift")) {
isTabGift();
CURRENT_TAB = TAB_GIFT;

/** 如果当前选项卡是message */
} else if (tabId.equalsIgnoreCase("product")) {
isTabProduct();
CURRENT_TAB = TAB_PRODUCT;

/** 如果当前选项卡是me */
} else if (tabId.equalsIgnoreCase("myself")) {
isTabMyself();
CURRENT_TAB = TAB_MYSELF;
} else if (tabId.equalsIgnoreCase("more")) {
isTabMore();
CURRENT_TAB = TAB_MORE;
} else {
switch (CURRENT_TAB) {
case TAB_MENU:
isTabMenu();
break;
case TAB_GIFT:
isTabGift();
break;
case TAB_PRODUCT:
isTabProduct();
break;
case TAB_MYSELF:
isTabMyself();
break;
case TAB_MORE:
isTabMore();
break;
default:
isTabMenu();
break;
}

}


ft.commit();
}

};



其中的一个方法isTabMyself()为: (其它的类似)

[解决办法]
fragment. setRetainInstance(false)
还有可以加入到fragment管理栈中

热点排行