public class FragmentBangTab extends BaseFragment implements OnClickListener
{
public HashMap<Integer, Fragment> mFragments;
private View mRootView;
public final static int TAB_BANG = 0;
public final static int TAB_DYNAMIC = 1;
private int mCurrentTab; // 当前Tab页面索引
private RadioGroup mRadioGroup;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, android.view.ViewGroup container, Bundle savedInstanceState)
{
mRootView = inflater.inflate(R.layout.fragment_bang_tab, null);
initData();
return mRootView;
}
private void initNavigation()
{
ImageView rightIv = (ImageView) mRootView.findViewById(R.id.btn_letter);
rightIv.setOnClickListener(this);
ImageView search = (ImageView) mRootView.findViewById(R.id.btn_search);
search.setOnClickListener(this);
mRadioGroup = (RadioGroup) mRootView.findViewById(R.id.title_radioGroup);
mRadioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch (checkedId)
{
case R.id.radio_my_bang:
onTitleCheckedChanged(TAB_BANG);
break;
case R.id.radio_dynamic:
onTitleCheckedChanged(TAB_DYNAMIC);
break;
}
}
});
}
public void onTitleCheckedChanged(int index)
{
if (mFragments.get(index) == null)
{
FragmentManager fm = mBaseActivity.getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag("TAB" + index);
if (fragment != null)
{
mFragments.put(index, fragment);
} else
{
if (index == TAB_BANG)
{
mFragments.put(index, new FragmentBang());
} else if (index == TAB_DYNAMIC)
{
mFragments.put(index, new FragmentDynamic());
}
}
}
Fragment fragment = mFragments.get(index);
FragmentTransaction ft = obtainFragmentTransaction(index);
mFragments.get(mCurrentTab).onPause(); // 暂停当前tab
if (fragment.isAdded())
{
fragment.onResume(); // 启动目标tab的onResume()
} else
{
ft.add(R.id.tab_content, fragment, "TAB" + index);
}
ft.commit();
showTab(index);
}
public void onRightNaviBtnClick()
{
Intent i = new Intent();
i.setClass(mBaseActivity, BangMapActivity.class);
startActivity(i);
}
@Override
public void onDestroy()
{
super.onDestroy();
if (mFragments != null)
{
mFragments.clear();
}
}
protected void initData()
{
mCurrentTab = TAB_BANG;
initNavigation();
if (mFragments == null)
{
mFragments = new HashMap<Integer, Fragment>();
}
// 默认显示第一页
FragmentManager fm = mBaseActivity.getSupportFragmentManager();
Fragment fragment = mFragments.get(mCurrentTab);
if (fragment == null)
{
FragmentTransaction ft = fm.beginTransaction();
BaseFragment fh = new FragmentBang();
ft.add(R.id.tab_content, fh, "TAB" + mCurrentTab);
ft.commit();
mFragments.put(mCurrentTab, fh);
} else
{
showTab(mCurrentTab);
}
}
/**
* 获取一个带动画的FragmentTransaction
*
* @param index
* @return
*/
private FragmentTransaction obtainFragmentTransaction(int index)
{
FragmentTransaction ft = mBaseActivity.getSupportFragmentManager().beginTransaction();
// 设置切换动画
if (index > mCurrentTab)
{
ft.setCustomAnimations(R.anim.o2o_slide_left_in, R.anim.o2o_slide_left_out);
} else
{
ft.setCustomAnimations(R.anim.o2o_slide_right_in, R.anim.o2o_slide_right_out);
}
return ft;
}
@Override
public void onResume()
{
super.onResume();
Fragment fragment = mFragments.get(mCurrentTab);
if (fragment != null)
{
FragmentTransaction ft = mBaseActivity.getSupportFragmentManager().beginTransaction();
ft.show(fragment);
ft.commitAllowingStateLoss();
fragment.onResume();
}
}
/**
* 切换tab
*
* @param idx
*/
private void showTab(int idx)
{
Set<Integer> keys = mFragments.keySet();
for (Integer i : keys)
{
Fragment fragment = mFragments.get(i);
FragmentTransaction ft = obtainFragmentTransaction(idx);
if (idx == i)
{
ft.show(fragment);
} else
{
ft.hide(fragment);
}
ft.commit();
}
mCurrentTab = idx; // 更新目标tab为当前tab
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btn_letter:
break;
case R.id.btn_search:
Intent i = new Intent();
i.setClass(mBaseActivity, SearchActivity.class);
startActivity(i);
break;
default:
break;
}
}
}
{
public HashMap<Integer, Fragment> mFragments;
private View mRootView;
public final static int TAB_BANG = 0;
public final static int TAB_DYNAMIC = 1;
private int mCurrentTab; // 当前Tab页面索引
private RadioGroup mRadioGroup;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, android.view.ViewGroup container, Bundle savedInstanceState)
{
mRootView = inflater.inflate(R.layout.fragment_bang_tab, null);
initData();
return mRootView;
}
private void initNavigation()
{
ImageView rightIv = (ImageView) mRootView.findViewById(R.id.btn_letter);
rightIv.setOnClickListener(this);
ImageView search = (ImageView) mRootView.findViewById(R.id.btn_search);
search.setOnClickListener(this);
mRadioGroup = (RadioGroup) mRootView.findViewById(R.id.title_radioGroup);
mRadioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch (checkedId)
{
case R.id.radio_my_bang:
onTitleCheckedChanged(TAB_BANG);
break;
case R.id.radio_dynamic:
onTitleCheckedChanged(TAB_DYNAMIC);
break;
}
}
});
}
public void onTitleCheckedChanged(int index)
{
if (mFragments.get(index) == null)
{
FragmentManager fm = mBaseActivity.getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag("TAB" + index);
if (fragment != null)
{
mFragments.put(index, fragment);
} else
{
if (index == TAB_BANG)
{
mFragments.put(index, new FragmentBang());
} else if (index == TAB_DYNAMIC)
{
mFragments.put(index, new FragmentDynamic());
}
}
}
Fragment fragment = mFragments.get(index);
FragmentTransaction ft = obtainFragmentTransaction(index);
mFragments.get(mCurrentTab).onPause(); // 暂停当前tab
if (fragment.isAdded())
{
fragment.onResume(); // 启动目标tab的onResume()
} else
{
ft.add(R.id.tab_content, fragment, "TAB" + index);
}
ft.commit();
showTab(index);
}
public void onRightNaviBtnClick()
{
Intent i = new Intent();
i.setClass(mBaseActivity, BangMapActivity.class);
startActivity(i);
}
@Override
public void onDestroy()
{
super.onDestroy();
if (mFragments != null)
{
mFragments.clear();
}
}
protected void initData()
{
mCurrentTab = TAB_BANG;
initNavigation();
if (mFragments == null)
{
mFragments = new HashMap<Integer, Fragment>();
}
// 默认显示第一页
FragmentManager fm = mBaseActivity.getSupportFragmentManager();
Fragment fragment = mFragments.get(mCurrentTab);
if (fragment == null)
{
FragmentTransaction ft = fm.beginTransaction();
BaseFragment fh = new FragmentBang();
ft.add(R.id.tab_content, fh, "TAB" + mCurrentTab);
ft.commit();
mFragments.put(mCurrentTab, fh);
} else
{
showTab(mCurrentTab);
}
}
/**
* 获取一个带动画的FragmentTransaction
*
* @param index
* @return
*/
private FragmentTransaction obtainFragmentTransaction(int index)
{
FragmentTransaction ft = mBaseActivity.getSupportFragmentManager().beginTransaction();
// 设置切换动画
if (index > mCurrentTab)
{
ft.setCustomAnimations(R.anim.o2o_slide_left_in, R.anim.o2o_slide_left_out);
} else
{
ft.setCustomAnimations(R.anim.o2o_slide_right_in, R.anim.o2o_slide_right_out);
}
return ft;
}
@Override
public void onResume()
{
super.onResume();
Fragment fragment = mFragments.get(mCurrentTab);
if (fragment != null)
{
FragmentTransaction ft = mBaseActivity.getSupportFragmentManager().beginTransaction();
ft.show(fragment);
ft.commitAllowingStateLoss();
fragment.onResume();
}
}
/**
* 切换tab
*
* @param idx
*/
private void showTab(int idx)
{
Set<Integer> keys = mFragments.keySet();
for (Integer i : keys)
{
Fragment fragment = mFragments.get(i);
FragmentTransaction ft = obtainFragmentTransaction(idx);
if (idx == i)
{
ft.show(fragment);
} else
{
ft.hide(fragment);
}
ft.commit();
}
mCurrentTab = idx; // 更新目标tab为当前tab
}
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btn_letter:
break;
case R.id.btn_search:
Intent i = new Intent();
i.setClass(mBaseActivity, SearchActivity.class);
startActivity(i);
break;
default:
break;
}
}
}