8

v4 サポート ライブラリを使用して、Fragments などの最近のバージョンで導入されたものを古い Android バージョンに実装できることはわかっています。たとえば、 v4 サポート ライブラリを使用してDialog Fragmentsを表示するアプリを実装すると、 ICS で実行するときに最新のコード (つまり、元のフラグメントと新しいフラグメント) を使用しますか?それともすべての Android バージョンのサポート コードを引き続き使用しますか?

同じアプリでandroid.app.Fragmentクラスとクラスの両方を使用して、Android のFragment 対応リリースで実行している場合、またはv4 サポート ライブラリをインポートするときにサポート クラスのみを使用する必要があるandroid.support.v4.app.Fragment場合に、実行時に区別する方法はありますか?

たぶん私が間違っているかもしれませんが、最近のプラットフォームで実行するときに最新のコードを使用しないのは良い考えではないようです..

ダイアログフラグメントのケースに固執して、何が良いと思いますか:

1) v4 サポート ライブラリを使用します。つまり、すべての Android バージョンで互換コードを使用します。

2)android.app.DialogFragment API レベル 11 以上で実行する場合は new を使用し、 API レベル 11 未満で実行する場合は非推奨のクラスshowDialogonCreateDialogメソッドを使用します。Activity

私がすでに言ったように、私見の最善の方法は次のとおりですが、(間違っている場合は修正してください)それは可能な解決策ではありません:

3)android.app.DialogFragment API レベル 11 以上で実行する場合は新しいクラスを使用し、 API レベル 11android.support.v4.app.DialogFragment未満で実行する場合はクラスを使用します。

少し混乱させて申し訳ありませんが、質問が非常に明確であることを願っています..

4

3 に答える 3

11

プロジェクトで Android サポート ライブラリを使用する場合、デバイスに Android の互換性のある API レベルがあり、互換性ライブラリを使用する必要がない場合でも、互換性ライブラリのメソッドが使用されます。

編集

それが述べているAndroidサポートライブラリv4コードを閲覧すると(android.support.v4.app.Fragmentクラスのコメントで):

フレームワークの android.app.Fragment の静的ライブラリ サポート バージョン。Android 3.0 より前のプラットフォームで実行されるアプリを作成するために使用されます。Android 3.0 以降で実行する場合、この実装は引き続き使用されます。フレームワークの実装に切り替えようとはしません。クラスの概要については、フレームワーク SDK のドキュメントを参照してください。

ここにリンクします。

于 2012-06-29T14:28:15.920 に答える
6

たとえば、v4 サポート ライブラリを使用してダイアログ フラグメントを表示するアプリを実装する場合、ICS で実行するときに最新のコード (つまり、元のフラグメントと新しいフラグメント) を使用しますか、それとも Android のすべてのバージョンでサポート コードを引き続き使用しますか? ?

特にフラグメントの場合、常に独自のバックポートを使用します。それ以外の場合は、利用可能なネイティブ実装に渡されることがあります。

同じアプリで android.app.Fragment クラスと android.support.v4.app.Fragment クラスの両方を使用する方法はありますか? v4 サポート ライブラリをインポートするときにサポート クラスのみを使用するにはどうすればよいですか?

私はサポートクラスに固執します。別のアプローチを取ることによって、実際の利益を得ることなく、大量の追加作業を追加することになります。

私が間違っているかもしれませんが、最近のプラットフォームで実行するときに最新のコードを使用しないのは良い考えではないように思えます。

ご意見よろしくお願いします。フラグメントのような大規模なサブシステムの場合、IMHO のコストがメリットを上回ります。

ダイアログフラグメントのケースに固執して、何が良いと思いますか:

最良のオプションは、DialogFragmentダイアログを使用せずに目的を達成する方法を見つける代わりに、まったく使用しないことです。

提示された 3 つのオプションのうち、当面はオプション #1 を使用します。Android 2.x のサポートを中止してもよいと感じたら、アプリ全体でネイティブ フラグメントの使用に切り替えることができます。

于 2012-06-29T14:47:23.683 に答える
2

これを使用して、プログラムで API レベルを確認できます。

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.FROYO){
// Do something for froyo and above versions
} else{
// do something for phones running an SDK before froyo
}

次に、DialogFragment だけでなく、android.app.DialogFragment または android.support.v4.app.Fragment などのクラスの名前全体をコードに記述することで、コードを複製して必要なクラスを使用できます。

于 2012-06-29T14:37:14.927 に答える