package com.jasonchen.microlang.fragments; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.jasonchen.microlang.R; import com.jasonchen.microlang.activitys.MainActivity; import com.jasonchen.microlang.beans.AccountBean; import com.jasonchen.microlang.beans.UserBean; import com.jasonchen.microlang.debug.AppLogger; import com.jasonchen.microlang.settings.SettingUtility; import com.jasonchen.microlang.utils.BundleArgsConstants; import com.jasonchen.microlang.utils.UnreadTabIndex; import com.jasonchen.microlang.utils.ViewUtility; import com.jasonchen.microlang.view.LinearViewPagerIndicator; import com.jasonchen.microlang.view.SlidingTabLayout; import com.jasonchen.microlang.view.SlidingTabStrip; /** * jasonchen * 2015/04/10 */ public class MentionFragment extends AbstractAppFragment { private View view; private static final String ARGUMENTS_ACCOUNT_EXTRA = MentionFragment.class .getName() + ":account_extra"; private static final String ARGUMENTS_USER_EXTRA = MentionFragment.class .getName() + ":userBean_extra"; private static final String ARGUMENTS_TOKEN_EXTRA = MentionFragment.class .getName() + ":token_extra"; private AccountBean accountBean; private UserBean userBean; private String token; private MentionTimeLineFragment statusFragment; private MentionCommentFragment commentFragment; private SlidingTabLayout tab; private ViewPager mPager; public static MentionFragment newInstance(AccountBean accountBean, UserBean userBean, String token) { MentionFragment fragment = new MentionFragment(); Bundle bundle = new Bundle(); bundle.putParcelable(ARGUMENTS_ACCOUNT_EXTRA, accountBean); bundle.putParcelable(ARGUMENTS_USER_EXTRA, userBean); bundle.putString(ARGUMENTS_TOKEN_EXTRA, token); fragment.setArguments(bundle); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if (view == null) { view = inflater.inflate(R.layout.fragment_mention, container, false); } return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); userBean = getArguments().getParcelable(ARGUMENTS_USER_EXTRA); accountBean = getArguments().getParcelable(ARGUMENTS_ACCOUNT_EXTRA); token = getArguments().getString(ARGUMENTS_TOKEN_EXTRA); buildInterface(); } private void buildInterface() { // Initialize views tab = ViewUtility.findViewById(view, R.id.tab); mPager = (ViewPager) view.findViewById(R.id.mentions_pager); if (Build.VERSION.SDK_INT >= 21) { ((MainActivity) getActivity()).getSupportActionBar().setElevation(0.0f); } // View Pager statusFragment = (MentionTimeLineFragment) getStatusFragment(); commentFragment = (MentionCommentFragment) getCommentFragment(); mPager.setAdapter(new FragmentStatePagerAdapter(getFragmentManager()) { @Override public int getCount() { return 2; } @Override public android.support.v4.app.Fragment getItem(int position) { switch (position) { case 0: return statusFragment; case 1: return commentFragment; default: return null; } } @Override public String getPageTitle(int position) { switch (position) { case 1: return "评论"; case 0: return "微博"; default: return ""; } } }); // Initialize indicator tab.setDistributeEvenly(true); tab.setViewPager(mPager); final int color = SettingUtility.getIsNightTheme() ? getResources().getColor(R.color.light_gray) : getResources().getColor(R.color.white); tab.setCustomTabColorizer(new SlidingTabStrip.SimpleTabColorizer() { @Override public int getIndicatorColor(int position) { return color; } @Override public int getSelectedTitleColor(int position) { return color; } }); tab.notifyIndicatorColorChanged(); } @Override public void onDestroy() { super.onDestroy(); } @Override public void onPause() { super.onPause(); } @Override public void onResume() { super.onResume(); if (((MainActivity) getActivity()).getIntent().getSerializableExtra(BundleArgsConstants.OPEN_NAVIGATION_INDEX_EXTRA) != null) { UnreadTabIndex unreadTabIndex = (UnreadTabIndex) ((MainActivity) getActivity()).getIntent().getSerializableExtra(BundleArgsConstants.OPEN_NAVIGATION_INDEX_EXTRA); switch (unreadTabIndex) { case MENTION_WEIBO: mPager.setCurrentItem(0); // Fragment statusfragment = getChildFragmentManager().findFragmentByTag(MentionTimeLineFragment.class.getName()); // //((MentionTimeLineFragment) ((FragmentStatePagerAdapter) mPager.getAdapter()).getItem(0)).refreshUnread(); // if (statusfragment != null) { // AppLogger.e("提及微博!!!!!"); // ((MentionTimeLineFragment) statusfragment).refreshUnread(); // } ((MainActivity) getActivity()).getIntent().putExtra(BundleArgsConstants.OPEN_NAVIGATION_INDEX_EXTRA, UnreadTabIndex.NONE); break; case MENTION_COMMENT: mPager.setCurrentItem(1); // Fragment commentfragment = getChildFragmentManager().findFragmentByTag(MentionCommentFragment.class.getName()); // //((MentionTimeLineFragment) ((FragmentStatePagerAdapter) mPager.getAdapter()).getItem(0)).refreshUnread(); // if (commentfragment != null) { // // ((MentionCommentFragment) commentfragment).refreshUnread(); // } //((MentionCommentFragment) ((FragmentStatePagerAdapter) mPager.getAdapter()).getItem(1)).refreshUnread(); ((MainActivity) getActivity()).getIntent().putExtra(BundleArgsConstants.OPEN_NAVIGATION_INDEX_EXTRA, UnreadTabIndex.NONE); break; } } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @Override public void onViewStateRestored(@Nullable Bundle savedInstanceState) { super.onViewStateRestored(savedInstanceState); } public interface refreshUnread { public void refreshUnread(); } private Fragment getStatusFragment(){ Fragment fragment = getChildFragmentManager().findFragmentByTag(MentionTimeLineFragment.class.getName()); if(fragment == null){ fragment = MentionTimeLineFragment.newInstance(accountBean, userBean, token); getChildFragmentManager().beginTransaction().add(fragment, MentionTimeLineFragment.class.getName()); } return fragment; } private Fragment getCommentFragment(){ Fragment fragment = getChildFragmentManager().findFragmentByTag(MentionCommentFragment.class.getName()); if(fragment == null){ fragment = MentionCommentFragment.newInstance(accountBean, userBean, token); getChildFragmentManager().beginTransaction().add(fragment, MentionCommentFragment.class.getName()); } return fragment; } }