package com.handsomezhou.fragmentdemo.fragment; import java.util.ArrayList; import java.util.List; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.handsomezhou.fragmentdemo.R; import com.handsomezhou.fragmentdemo.Interface.OnTabChange; import com.handsomezhou.fragmentdemo.adapter.AddressBookFragmentPagerAdapter; import com.handsomezhou.fragmentdemo.model.PartnerView; import com.handsomezhou.fragmentdemo.model.IconButtonData; import com.handsomezhou.fragmentdemo.model.IconButtonValue; import com.handsomezhou.fragmentdemo.view.BottomTabView; import com.handsomezhou.fragmentdemo.view.CustomViewPager; public class AddressBookBottomTabFragment extends BaseFragment implements OnTabChange{ private List<PartnerView> mAddressBookViews; private BottomTabView mBottomTabView; private CustomViewPager mCustomViewPager; private AddressBookFragmentPagerAdapter mAddressBookFragmentPagerAdapter; public enum BOTTOM_TAB_TAG{ CALL, CONTACTS, SMS, MORE, } @Override protected void initData() { setContext(getActivity()); mAddressBookViews=new ArrayList<PartnerView>(); /*Start: call view*/ PartnerView callAddressBookView=new PartnerView(BOTTOM_TAB_TAG.CALL, new TelephoneFragment()); mAddressBookViews.add(callAddressBookView); /*End: call view*/ /*Start: contacts view*/ PartnerView contactsAddressBookView=new PartnerView(BOTTOM_TAB_TAG.CONTACTS, new ContactsFragment()); mAddressBookViews.add(contactsAddressBookView); /*End: contacts view*/ /*Start: contacts view*/ PartnerView smsAddressBookView=new PartnerView(BOTTOM_TAB_TAG.SMS, new SmsFragment()); mAddressBookViews.add(smsAddressBookView); /*End: contacts view*/ /*Start: contacts view*/ PartnerView moreAddressBookView=new PartnerView(BOTTOM_TAB_TAG.MORE, new MoreFragment()); mAddressBookViews.add(moreAddressBookView); /*End: contacts view*/ } @Override protected View initView(LayoutInflater inflater, ViewGroup container) { View view=inflater.inflate(R.layout.fragment_address_book_bottom_tab, container, false); mCustomViewPager=(CustomViewPager)view.findViewById(R.id.custom_view_pager); mCustomViewPager.setPagingEnabled(true); mBottomTabView=(BottomTabView) view.findViewById(R.id.bottom_tab_view); mBottomTabView.removeAllViews(); /*Start: call tab*/ IconButtonValue callIconBtnValue=new IconButtonValue(BOTTOM_TAB_TAG.CALL,R.drawable.call_icon_selected_unfocused,R.drawable.call_icon_selected_focused, R.drawable.call_icon_unselected, R.string.call); IconButtonData callIconBtnData=new IconButtonData(getContext(), callIconBtnValue); mBottomTabView.addIconButtonData(callIconBtnData); /*End: call tab*/ /*Start: contacts tab*/ IconButtonValue contactsIconBtnValue=new IconButtonValue(BOTTOM_TAB_TAG.CONTACTS,R.drawable.contacts_icon_selected_unfocused, R.drawable.contacts_icon_unselected, R.string.contacts); IconButtonData contactsIconBtnData=new IconButtonData(getContext(), contactsIconBtnValue); mBottomTabView.addIconButtonData(contactsIconBtnData); /*End: contacts tab*/ /*Start: sms tab*/ IconButtonValue smsIconBtnValue=new IconButtonValue(BOTTOM_TAB_TAG.SMS,R.drawable.sms_icon_selected_unfocused, R.drawable.sms_icon_unselected, R.string.sms); IconButtonData smsIconBtnData=new IconButtonData(getContext(), smsIconBtnValue); mBottomTabView.addIconButtonData(smsIconBtnData); /*End: sms tab*/ /*Start: more tab*/ IconButtonValue moreIconBtnValue=new IconButtonValue(BOTTOM_TAB_TAG.MORE,R.drawable.more_icon_selected_unfocused, R.drawable.more_icon_unselected, R.string.more); IconButtonData moreIconBtnData=new IconButtonData(getContext(), moreIconBtnValue); mBottomTabView.addIconButtonData(moreIconBtnData); /*End: more tab*/ mBottomTabView.setOnTabChange(this); return view; } @Override protected void initListener() { FragmentManager fm=getActivity().getSupportFragmentManager(); mAddressBookFragmentPagerAdapter=new AddressBookFragmentPagerAdapter(fm, mAddressBookViews); mCustomViewPager.setAdapter(mAddressBookFragmentPagerAdapter); mCustomViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageSelected(int pos) { PartnerView addressBookView=mAddressBookViews.get(pos); //Toast.makeText(getContext(),addressBookView.getTag().toString()+"+++" , Toast.LENGTH_LONG).show(); mBottomTabView.setCurrentTabItem(addressBookView.getTag()); } @Override public void onPageScrolled(int pos, float posOffset, int posOffsetPixels) { } @Override public void onPageScrollStateChanged(int state) { } }); } /*Start: OnTabChange*/ @Override public void onChangeToTab(Object fromTab, Object toTab, TAB_CHANGE_STATE tabChangeState) { //Toast.makeText(getContext(), "onChangeToTab"+"["+fromTab.toString()+"]["+toTab.toString()+"]tabChangeState["+tabChangeState.toString()+"]", Toast.LENGTH_SHORT).show(); int item=getAddressBookViewItem(toTab); mCustomViewPager.setCurrentItem(item); } @Override public void onClickTab(Object currentTab, TAB_CHANGE_STATE tabChangeState) { //Toast.makeText(getContext(), "onClickTab"+"["+currentTab.toString()+"]tabChangeState��"+tabChangeState.toString()+"]", Toast.LENGTH_SHORT).show(); Fragment fragment=mAddressBookViews.get(getAddressBookViewItem(currentTab)).getFragment(); switch ((BOTTOM_TAB_TAG)currentTab) { case CALL: if(fragment instanceof TelephoneFragment){ ((TelephoneFragment) fragment).updateView(tabChangeState); } break; default: break; } } /*End: OnTabChange*/ private int getAddressBookViewItem(Object tag){ int item=0;; do{ if(null==tag){ break; } for(int i=0; i<mAddressBookViews.size();i++){ if(mAddressBookViews.get(i).getTag().equals(tag)){ item=i; break; } } }while(false); return item; } }