私はいくつかの種類のビジュアルフラグメントを実装するクラスをいくつか持っています。 (私はApetWidgetsと呼んでいます) 彼らは独自のクラス階層を持っています。アクティビティを開始し、非活動デセンダントクラスから結果を取得する
public class SignatureApetWidget extends AbstractApetWidget {
private void startCapture(ApetActivity act) {
Intent intent = new Intent(act, SignatureCaptureActivity.class);
intent.putExtra(...);
act.startActivityForResult(intent, CAPTURE_SIGNATURE_REQUEST);
}
これらのうちの1人は別のアクティビティを開始し、結果を待つ必要があります。しかし、私はウィジェットを含むアクティビティへの参照を持っていますが、parentActivityのstartActivityForResultを呼び出すことはできますが、親アクティビティにも移動するため、結果をインターセプトできませんでした。
私はその結果をキャッチして、私のウィジェットに処理を委譲することができましたが、ウィジェット固有のロジックをウィジェットからアクティビティに移動しなければならないということは悪い習慣です。ウィジェットを使用する予定のすべてのアクティビティクラスでこの委任を実装する必要があります)。
私は他のアクティビティを開始する方法を知っています(少なくとも私は方法を知っています)。 (それはうまく動作します。)しかし、私はそれから何の結果も得られません。 アクティビティやその他のクラスを継承したり継承したりすることはできません(私のウィジェットには独自のクラス階層があります)。
私の質問は、カプセル化句を誤って推論することなく、非アクティビティクラス内の結果のアクティビティをどのように開始できますか?
おかげで、 Balage
フラグメントは完璧なツールですが、使用できませんでした。APIレベル7のコンプライアンスでなければならず、レベル11で導入されています。多くのリファクタリングが現在の開発状況で断片に移行しています)。 しかし、私はこの新機能を指摘してくれてありがとう! – Balage1551
確かに、Android SDKのダウンロードの一環として、互換性ライブラリがあります。これで1.6までのサポートが可能になります。http://developer.android.com/sdk/compatibility-library.htmlこのjarファイルを含めることで、フラグメントapiを使用することができます。使用すると動作しますすばらしいです。また、これは:http://android-developers.blogspot.com/2011/03/fragments-for-all.html – sgarman