今、私はそれを完了する必要がある詳細でアクションを実行します
これはマスター/ディテール パターンでは珍しいフローです。通常、詳細は、ユーザーがマスター リスト内の別のものをタップするまで保持されます。ただし、表示されているアイテムの削除操作の提案されたフローを見ることができました。
両方のアクティビティが実装され、単一のペインがそれ自体を終了してフラグメントを終了し、デュアルペインがフラグメントをポップするコールバックについて考えていました。
それは素晴らしい答えです。
これはオーバーヘッドではありませんか?
いいえ。フラグメントをホストするすべてのアクティビティが実装する必要があるインターフェイスを定義します。コントラクト パターンを使用して、次のことを強制することを検討してください。
import android.app.Activity;
import com.actionbarsherlock.app.SherlockFragment;
// from https://gist.github.com/2621173
public abstract class ContractFragment<T> extends SherlockFragment {
private T mContract;
@SuppressWarnings("unchecked")
@Override
public void onAttach(Activity activity) {
try {
mContract=(T)activity;
}
catch (ClassCastException e) {
throw new IllegalStateException(activity.getClass()
.getSimpleName()
+ " does not implement "
+ getClass().getSimpleName()
+ "'s contract interface.", e);
}
super.onAttach(activity);
}
@Override
public void onDetach() {
super.onDetach();
mContract=null;
}
public final T getContract() {
return mContract;
}
}
( ActionBarSherlock で有名なJake Wharton の要点に基づくコード)
ここでT
は、インターフェイスの名前です。フラグメントはこれから継承しgetContract()
、コールバック メソッドを呼び出すインターフェイス実装オブジェクトを取得するために呼び出します。実行時のオーバーヘッドは、せいぜい数十命令程度です。心配する必要はありません。