package im.zico.wingtwitter.ui.fragment; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.TextView; import java.util.Calendar; import im.zico.wingtwitter.R; import im.zico.wingtwitter.dao.WingDataHelper; import im.zico.wingtwitter.ui.MainActivity; import im.zico.wingtwitter.view.UnderlinePageIndicator; /** * Created by tinyao on 12/1/14. */ public class HomeFragment extends BaseFragment implements View.OnClickListener{ HomePagerAdapter mSectionsPagerAdapter; ViewPager mViewPager; UnderlinePageIndicator indicator; public static HomeFragment newInstance(int frameId) { HomeFragment fragment = new HomeFragment(); setParams(fragment, frameId); return fragment; } public HomeFragment() { } WingDataHelper DBHelper; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // set custom toolbar layout LayoutInflater inflator = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = inflator.inflate(R.layout.layout_indicator, null); ActionBar.LayoutParams lp = new ActionBar.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.MATCH_PARENT, Gravity.RIGHT | Gravity.CENTER_VERTICAL); getActivity().getActionBar().setDisplayShowCustomEnabled(true); getActivity().getActionBar().setCustomView(v, lp); indicator = (UnderlinePageIndicator) v.findViewById(R.id.indicator); DBHelper = new WingDataHelper(getActivity()); v.findViewById(R.id.tab_home).setOnClickListener(this); v.findViewById(R.id.tab_mention).setOnClickListener(this); v.findViewById(R.id.tab_message).setOnClickListener(this); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d("DEBUG", "Home onCreateView: " + Calendar.getInstance().getTimeInMillis()); View contentView = inflater.inflate(R.layout.fragment_home, container, false); mSectionsPagerAdapter = new HomePagerAdapter(getChildFragmentManager()); mViewPager = (ViewPager) contentView.findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); mViewPager.setOffscreenPageLimit(2); mViewPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.page_margin)); indicator.setViewPager(mViewPager); Log.d("DEBUG", "Home onCreateViewed: " + Calendar.getInstance().getTimeInMillis()); return contentView; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); // Add Event to Toolbar click, trigger listview in fragment scroll to top ((MainActivity) getActivity()).getToolBar().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("DEBUG", "actionbar click ..."); if (mViewPager.getCurrentItem() == 0 || mViewPager.getCurrentItem() == 1) { BaseStatusesListFragment currentFragment = (BaseStatusesListFragment) getChildFragmentManager() .findFragmentByTag("android:switcher:" + R.id.pager + ":" + mViewPager.getCurrentItem()); if(currentFragment!=null) currentFragment.scrollTop(); } } }); Log.d("DEBUG", "Home onViewCreated: " + Calendar.getInstance().getTimeInMillis()); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.tab_home: if (mViewPager.getCurrentItem() == 0) { BaseStatusesListFragment currentFragment = (BaseStatusesListFragment) getChildFragmentManager() .findFragmentByTag("android:switcher:" + R.id.pager + ":" + mViewPager.getCurrentItem()); currentFragment.scrollTop(); } else { mViewPager.setCurrentItem(0, true); } break; case R.id.tab_mention: if (mViewPager.getCurrentItem() == 1) { BaseStatusesListFragment currentFragment = (BaseStatusesListFragment) getChildFragmentManager() .findFragmentByTag("android:switcher:" + R.id.pager + ":" + mViewPager.getCurrentItem()); currentFragment.scrollTop(); } else { mViewPager.setCurrentItem(1, true); } break; case R.id.tab_message: mViewPager.setCurrentItem(2, true); break; } } private class HomePagerAdapter extends FragmentPagerAdapter { int TAB_SIZE = 3; public HomePagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch (position) { case 0: return HomeTimeLineFragment.newInstance(position); case 1: return MentionedFragment.newInstance(position); case 2: return DMFragment.newInstance(position); } return null; } @Override public int getCount() { return TAB_SIZE; } } @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.d("DEBUG", "Home onAttach: " + Calendar.getInstance().getTimeInMillis()); } }