平台:eclipse
说明:
使用radiogroup切换fragment,替代tabhost。
这是常用的iOS首页模式,献给被iOS产品经理折磨的Android程序员
private BaseFragment toFragment; | |
/** | |
* 切换Fragment | |
* | |
* @throws Exception | |
*/ | |
public void switchContent(String tag) { | |
Log.d(TAG, "switchContent tag " + tag); | |
mCurrentFragmentTag = tag; | |
toFragment = (BaseFragment) getSupportFragmentManager() | |
.findFragmentByTag(tag); | |
// 强制刷新Home2Fra界面 | |
if (toFragment != null | |
&& tag.equals(Home2Fra.FRAGMENT_TAG)) { | |
if (toFragment.isVisible()) { | |
FragmentTransaction fmt = getSupportFragmentManager() | |
.beginTransaction(); | |
fmt.remove(toFragment); | |
toFragment = null; | |
} | |
} | |
// 强制刷新Home2Fra界面 | |
if (toFragment != null && tag.equals(Home2Fra.FRAGMENT_TAG)) { | |
if (toFragment.isVisible()) { | |
FragmentTransaction fmt = getSupportFragmentManager() | |
.beginTransaction(); | |
fmt.remove(toFragment); | |
toFragment = null; | |
} | |
} | |
// 强制刷Home2Fra界面 | |
if (toFragment != null | |
&& tag.equals(Home2Fra.FRAGMENT_TAG)) { | |
if (toFragment.isVisible()) { | |
FragmentTransaction fmt = getSupportFragmentManager() | |
.beginTransaction(); | |
fmt.remove(toFragment); | |
toFragment = null; | |
} | |
} | |
if (toFragment == null) { | |
Log.d(TAG, "toFragment == null " + tag); | |
toFragment = FragmentFactory.getFragmentByTag(tag); | |
if (toFragment == null) { | |
throw new NullPointerException( | |
"you should create a new Fragment by Tag" + tag); | |
} | |
FragmentTransaction fragmentTransaction = getSupportFragmentManager() | |
.beginTransaction(); | |
fragmentTransaction | |
.add(R.id.lay_content_container, toFragment, tag); | |
if (mCurrentFragment != null) { | |
fragmentTransaction.hide(mCurrentFragment); | |
} | |
fragmentTransaction.commit(); | |
mCurrentFragment = toFragment; | |
} else { | |
if (mCurrentFragment == toFragment) { | |
return; | |
} | |
if (!toFragment.isAdded()) { | |
Log.d(TAG, "!toFragment.isAdded() " + tag); | |
FragmentTransaction fmt = getSupportFragmentManager() | |
.beginTransaction(); | |
if (mCurrentFragment != null) { | |
fmt.hide(mCurrentFragment); | |
} | |
fmt.add(R.id.lay_content_container, toFragment, tag); | |
fmt.commit(); | |
mCurrentFragment = toFragment; | |
} else { | |
Log.d(TAG, "toFragment.isAdded() " + tag); | |
if (toFragment.isHidden()) { | |
Log.d(TAG, | |
"toFragment.isHidden() " + tag + toFragment.getId()); | |
} | |
FragmentTransaction fmt = getSupportFragmentManager() | |
.beginTransaction(); | |
if (mCurrentFragment != null) { | |
Log.d(TAG, "mCurrentFragment != null " | |
+ mCurrentFragment.getTag()); | |
fmt.hide(mCurrentFragment); | |
} else { | |
Log.d(TAG, "mCurrentFragment == null "); | |
} | |
fmt.show(toFragment).commit(); | |
mCurrentFragment = toFragment; | |
} | |
} | |
} |