どちらが優れていて、なぜですか?onActivityResult()でsuper.onActivityResult()を使用する必要はありますか?
この1:
またはこの:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
// do not call super.onActivityResult()
...
}
どちらが優れていて、なぜですか?onActivityResult()でsuper.onActivityResult()を使用する必要はありますか?
この1:
またはこの:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
// do not call super.onActivityResult()
...
}
最初の方が良いです。
Activity
APIの他のイベント関数と一貫性がありますが、何もかかりません(呼び出し中のコードは現時点で何もしません)。これは、呼び出しを追加することを忘れないことを意味します。将来、基本クラスの動作が変更されたとき。
編集蘇-Auの黄氏が指摘したように
は、将来的には、基本クラスの変更の行動についての私の予測が叶うました! FragmentActivity
にはがあり、super
のメソッドを呼び出す必要があります。
アプリケーションでそれに依存Activity
の複数のサブクラスを持っていない限り、それはsuper.onActivityResult()
が必要とされて呼び出すようには見えませんが、 onActivityResult()
の実装は空です(APIレベル15を確認しました)。
Activityのソースコードを見て、自分でこれに答えることができます。
基本的にはそう何もしない... ...このようになります
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
onActivityResult(...)
の実装です。
デフォルトの実装が空であるように見えますが、今後のアップデートでは必ずしもそうではない可能性があります。私はそれを使用することをお勧めします
サポートパッケージ(またはSherlockFragmentActivity)からFragmentActivityを使用している場合は、super.onActivityResultを呼び出す必要があります。そうでなければ、それは必要ではありませんが、私はそれのためにそこにプラグインします。 FragmentActivityのソースを確認します(onActivityResultは空ではありません)。
あなたがサポートパッケージからFragmentActivityを使用している場合、あなたはスーパーを呼び出す必要があり、私の答えを参照してください。 –