package com.buaa.shortytall.view.fragment; import java.lang.ref.WeakReference; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; import android.support.v4.view.ViewPager; import com.actionbarsherlock.app.ActionBar.Tab; import com.actionbarsherlock.app.SherlockFragment; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.view.ActionMode; import com.buaa.shortytall.R; import com.buaa.shortytall.view.AsyncInflater; import com.buaa.shortytall.view.InflateListener; public abstract class New_BaseFragment extends SherlockFragment implements InflateListener, ViewPager.OnPageChangeListener{ protected Handler handler; protected Context context; protected LinearLayout fragmentFrameView; protected View contentView; protected boolean dataLoaded; protected LayoutInflater inflater; protected Tab tab; protected TextView customTabView; protected boolean isCurrentTab; protected LinearLayout.LayoutParams defaultLayoutParams = new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); public New_BaseFragment(Handler handler,Context context) { this.handler = handler; this.context = context; inflater = LayoutInflater.from(context); fragmentFrameView = (LinearLayout) inflater.inflate(R.layout.new_base_fragment, null); int layoutId = getAsyncInitViewResId(); if (layoutId > 0) { asyncInitView(layoutId); } tab = initTab(); } protected abstract Tab initTab(); public Tab getTab() { return tab; } @Override public final void onInflatedView(View view) { contentView = view; fragmentFrameView.addView(view, defaultLayoutParams); if (preOnInflated()) { onInflated(); } }; @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub } public void onTabSelected() { isCurrentTab = true; } public void onTabUnselected() { } private void asyncInitView(int layoutId) { AsyncInflater.getInstance().asyncInflate(LayoutInflater.from(context), layoutId, new WeakReference<Handler>(handler), new WeakReference<InflateListener>(this)); } @Override public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) { throw new UnsupportedOperationException( "this base fragment does not support xml definition"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return null; } public abstract void handleMessage(Message message); public abstract int getAsyncInitViewResId(); protected abstract void onInflated(); protected boolean preOnInflated() { return true; } @Override public View getView() { return fragmentFrameView; } protected void setActionBarTitle(String title) { if (context instanceof SherlockFragmentActivity) { SherlockFragmentActivity activity = (SherlockFragmentActivity) context; activity.getSupportActionBar().setTitle(title); } } protected void setDisplayHomeAsUpEnabled(boolean enable) { if (context instanceof SherlockFragmentActivity) { SherlockFragmentActivity activity = (SherlockFragmentActivity) context; activity.getSupportActionBar().setDisplayHomeAsUpEnabled(enable); } } public void onActionModeFinished(ActionMode mode) { } public void onActionModeFinished(android.view.ActionMode mode) { } public void onActionModeStarted(ActionMode mode) { } public void onActionModeStarted(android.view.ActionMode mode) { } public void onNetworkChange() { } }