package com.buaa.shortytall.activity;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.ActionMode;
import com.buaa.shortytall.view.AsyncInflater;
import com.buaa.shortytall.view.InflateListener;
import com.buaa.shortytall.view.fragment.New_BaseFragment;
public abstract class New_BaseActivity extends SherlockFragmentActivity{
//share one handler
protected Handler handler;
protected ArrayList<New_BaseFragment> fragments = new ArrayList<New_BaseFragment>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.handler = new Handler(){
@Override
public void handleMessage(Message msg) {
New_BaseActivity.this.handleMessage(msg);
}
};
}
protected synchronized void handleMessage(Message msg) {
for (int i = 0; i < fragments.size(); ++i) {
fragments.get(i).handleMessage(msg);
}
}
protected void asyncInflateView(ViewGroup root, int layoutId, InflateListener listener) {
AsyncInflater.getInstance().asyncInflate(LayoutInflater.from(this), layoutId,
new WeakReference<Handler>(handler), new WeakReference<InflateListener>(listener));
}
protected synchronized void addMessageHandler(New_BaseFragment fragment) {
if (fragment != null) {
fragments.add(fragment);
}
}
public ActionMode createActionMode(ActionMode.Callback callback) {
return getSherlock().startActionMode(callback);
}
@Override
public void onActionModeFinished(ActionMode mode) {
for (New_BaseFragment fragment: fragments) {
fragment.onActionModeFinished(mode);
}
}
protected abstract void initTabs();
@Override
public void onActionModeStarted(ActionMode mode) {
for (New_BaseFragment fragment: fragments) {
fragment.onActionModeStarted(mode);
}
}
protected synchronized void removeMessageHandler(New_BaseFragment fragment) {
fragments.remove(fragment);
}
}