@Override
public
View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG,
"TabViewPager onCreate Called."
);
if
(view ==
null
) {
view = inflater.inflate(R.layout.tabpager,container,
false
);
mActionBar = ((ActionBarActivity) activity).getSupportActionBar();
mActionBar.setIcon(
new
ColorDrawable(Color.TRANSPARENT));
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mActionBar.setDisplayShowTitleEnabled(
true
);
mTabPagerAdapter =
new
ActionBarTabPagerAdapter(((ActionBarActivity) activity).getSupportFragmentManager());
mPager = (ViewPager) view.findViewById(R.id.pager);
mPager.setAdapter(mTabPagerAdapter);
mPager.setOnPageChangeListener(
new
PagerListener());
bmTab = mActionBar.newTab();
bmTab.setText(
"즐겨찾기"
);
bmTab.setTabListener(
new
TabListener<BookMark>(activity,
"BookMark"
, BookMark.
class
));
mActionBar.addTab(bmTab);
lnTab = mActionBar.newTab();
lnTab.setText(
"노선번호"
);
lnTab.setTabListener(
new
TabListener<LineNumber>(activity,
"LineNumber"
, LineNumber.
class
));
mActionBar.addTab(lnTab);
bsTab = mActionBar.newTab();
bsTab.setText(
"정류소"
);
bsTab.setTabListener(
new
TabListener<BusStop>(activity,
"BusStop"
, BusStop.
class
));
mActionBar.addTab(bsTab);
nbsTab = mActionBar.newTab();
nbsTab.setText(
"주변정류소"
);
nbsTab.setTabListener(
new
TabListener<NearbyBusStop>(activity,
"NearbyBusStop"
, NearbyBusStop.
class
));
mActionBar.addTab(nbsTab);
}
else
{
((ViewGroup)view.getParent()).removeView(view);
}
if
(savedInstanceState !=
null
) {
mActionBar.setSelectedNavigationItem(savedInstanceState.getInt(
"tab"
,
0
));
}
return
view;
}
/생략/
private
class
TabListener <T>
implements
ActionBar.TabListener{
private
Activity mActivity;
private
String mTag;
private
Class<T> mClass;
private
Bundle mBundle;
private
Fragment mFragment;
public
TabListener(Activity mActivity, String mTag, Class<T> mClass){
this
(mActivity,mTag,mClass,
null
);
}
public
TabListener(Activity mActivity,String mTag, Class<T> mClass, Bundle mBundle){
super
();
this
.mActivity = mActivity;
this
.mTag = mTag;
this
.mClass = mClass;
this
.mBundle = mBundle;
FragmentManager fm = ((ActionBarActivity)activity).getSupportFragmentManager();
mFragment = fm.findFragmentByTag(mTag);
if
(mFragment !=
null
&& !mFragment.isDetached()){
FragmentTransaction ft = ((ActionBarActivity)activity).getSupportFragmentManager().beginTransaction();
ft.detach(mFragment);
ft.commit();
}
}
@Override
public
void
onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
Log.d(TAG,
"onTabSelected() Called."
);
int
position = tab.getPosition();
/생략/
if
(mFragment ==
null
){
mFragment = Fragment.instantiate(mActivity,mClass.getName(),mBundle);
fragmentTransaction.add(R.id.pager,mFragment,mTag);
}
else
{
fragmentTransaction.attach(mFragment);
}
mPager.setCurrentItem(tab.getPosition());
}
@Override
public
void
onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
Log.d(TAG,
"onTabUnselected() Called."
);
if
(mFragment !=
null
){
fragmentTransaction.detach(mFragment);
mFragment =
null
;
}
}
@Override
public
void
onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
Log.d(TAG,
"onTabReselected() Called."
);
}
}