70

どちらが優れているのか、そしてその理由は?

これです:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);

    ...
}

またはこれ:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    // do not call super.onActivityResult()
    ...
}
4

6 に答える 6

56

最初のものが優れています。

APIの他のイベント関数との整合性が高くActivity、コストはかかりません(呼び出しているコードは現時点では何もしません)。つまり、次の動作時に呼び出しを追加することを覚えておく必要はありません。基本クラスが変更されます。

編集

Su-Au Hwangが指摘しているように、将来変化する基本クラスの動作についての私の予測は実現しました!でメソッドを呼び出すFragmentActivity 必要がありsuperます。

于 2012-07-31T17:22:46.300 に答える
27

サポートパッケージ(SherlockFragmentActivityも)のFragmentActivityを使用している場合は、super.onActivityResultを呼び出す必要があります。それ以外の場合は必要ありませんが、それのためにそこに接続するだけです。FragmentActivityのソースを確認します(onActivityResultが空ではありません)。

FragmentActivityソース

于 2013-07-05T09:24:55.043 に答える
3

アプリケーションで複数のサブクラスに依存している場合を除いて、の実装は空であるため、Activity呼び出しが必要なようには見えません(APIレベル15を確認しました)。super.onActivityResult()onActivityResult()

于 2012-07-31T17:19:47.463 に答える
3

アクティビティのソースコードを見ると、自分で答えることができます。

基本的にonActivityResult(...)はこのように実装されています...

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}

...だから何もしません。

于 2012-07-31T17:19:57.303 に答える
2

デフォルトの実装は空のようですが、将来のアップデートでは常にそうであるとは限らない可能性があります。私はそれを使用することをお勧めします

于 2012-07-31T17:21:10.477 に答える
1

現在、superの呼び出しは必須です。「オーバーライドするメソッドはsuper.onActivityResultを呼び出す必要があります」というエラーがスローされます。スーパーを追加しても、コードに悪影響はありません。

于 2021-03-01T15:03:07.063 に答える