Android標準のFragmentよりsupport.v4.app.Fragmentを使うべき、という理由を徹底調査[随時更新]

  • 23
    Like
  • 0
    Comment
More than 1 year has passed since last update.

2/19のDroidKaigi2016の基調講演で「Android標準のFragmentよりsupport.v4.app.Fragmentを使うようにしましょう」というGoogleの中の人からのお触れが出たのですが、その理由を徹底的に自分が納得するまで探ろうかなという趣旨でこの記事をアップします。

主な理由は以下の2つです。

  • 「標準版Fragmentで残っている不具合がSupportLibrary版では治っているため」
  • 「OSのバージョンによる振る舞いの違いをなくすため」

具体的にどんな不具合か?どのような振る舞いの違いを吸収したのか?という疑問が残って調べてみましたのに私がわかった範囲で記載していきます。

「わかった範囲で」とは書きましたが現在私も完璧には追いかけれられていません。要所要所でわかってきたら随時更新していきます。(こういう事実があるよ!的な編集リクエストは大歓迎です!)

「標準版Fragmentで残っている不具合がSupportLibrary版では治っているため」

Android Support Library rev9(2012/6月発表)で発覚・修正された不具合

http://developer.android.com/intl/ja/tools/support-library/index.html#revisions
によると…

Fixed many bugs for Fragment, including proper handling of onActivityResult() when the target fragment no longer exists, dispatching selection events to invisible fragments, improved FragmentTransaction.replace() behavior and added better state handling for fragments being moved out of view.

らしい。。

Android Support Library rev23.0.1(2015/9月発表)で発覚・修正された不具合

Changes for v7 appcompat library:

Fixed crash issues for the Fragment class by limiting the use of hardware layers to Android 4.1 (API level 16) and higher. (Issue183896)

「OSのバージョンによる振る舞いの違いをなくすため」

ちょっと調べてみます。。。