关于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();
}
};