package com.buddycloud.fragments;
import android.app.Activity;
import com.actionbarsherlock.app.SherlockFragment;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.buddycloud.model.ModelCallback;
public abstract class ContentFragment extends SherlockFragment {
public abstract void attached(Activity activity);
public abstract void createOptions(Menu menu);
public abstract boolean menuItemSelected(int featureId, MenuItem item);
protected <T> SmartCallback<T> smartify(ModelCallback<T> callback) {
return new SmartCallback<T>(callback);
}
protected class SmartCallback<T> implements ModelCallback<T> {
private ModelCallback<T> innerCallback;
public SmartCallback(ModelCallback<T> innerCallback) {
this.innerCallback = innerCallback;
}
@Override
public void success(T response) {
if (!isAttachedToActivity()) {
return;
}
innerCallback.success(response);
}
@Override
public void error(Throwable throwable) {
if (!isAttachedToActivity()) {
return;
}
innerCallback.error(throwable);
}
}
protected boolean isAttachedToActivity() {
return !isDetached() && getActivity() != null;
}
}