なぜAppCompatActivity
のgetFragmentManager()
は、フラグメントマネージャのサポートバージョンを返しますか?代わりに、アクティビティをAppCompatActivity
にする必要があります。具体的にはgetSupportFragmentManager()
としてください。同じことが他の十数の方法にも当てはまります。それはあなた自身が呼び出すことができるメソッドと、 "サポート"バージョンとしてrebrandする必要があるメソッドを魔法のように熟知しなければならないということが私には不安です。 Androidの下位バージョンを引き続きサポートしている場合、「サポート」バージョンの代わりに「通常の」バージョンを呼びたいというユースケースはありますか? AppCompatActivity
がそれ以降のAPIバージョンActivity
と区別できないように機能していれば、それは私にはもっと意味をなさないでしょう。結局のところ、それはサポートされているのでしょうか?後のAPIバージョンActivity
と同じ機能を提供しますか?AppCompatActivity design
デザイン原則や隠されたJavaの制限によって、そうすることができないのですか?
なぜ、サポートライブラリに独自のバージョンのandroid.app.FragmentManagerが定義されているのでしょうか? (私は、 "サポートバージョンは、後のAPIでネイティブバージョンと競合する"または "セキュリティ上の理由"のいずれかの理由を予測しますが、わかりません) – Erhannis
@Erhannis: "サポートライブラリandroid.app.FragmentManagerの独自のバージョンを定義しますか? " - ライブラリを使用するアプリケーションがAPIレベル11以降でクラッシュし、 'android.app.FragmentManager'の実装が矛盾しているためです。 – CommonsWare
Hmm。 ClassLoadersとリフレクションを使って周りに微妙なやり方がなかったら私は驚くだろうが、私はそれを残すだろう。もう一つの解決策は、AppCompatActivityとActivity11、あるいはどちらも、独自のバージョンのFragmentManagerでgetFragmentManager()を実装しているものの、Activityをサブクラス化してメソッドを追加することです。私はそのアプローチが好きだとは言えません。面倒なことに不安です。ファイン、私は歩く。ありがとう。私はまだ、すべての "サポート"方法が本当に好きではありません。それも、整頓されていません。 – Erhannis