2

最近minSdkVersion="14"までTheme.AppCompat. コードに問題があります。最初の 1 つは、多くのフラグメントを使用していることです。

私のアプリに表示される最初のフラグメントは次のとおりです。

FirstRunNotice firstRunNotice = new FirstRunNotice();
firstRunNotice.show(getFragmentManager(), "WhatDoesThisStringEvenDo?");
//.show method gives an error

これは、拡張するアクティビティ内の単なる内部クラスDialogFragmentです。API 10 でこれを機能させるにはどうすればよいですか? それを変更するとandroid.support.v4.app.DialogFragment(Android Studioを使用して)エラーが取り除かれるように見えますが、1つの内部クラス(DialogFragmentsがある)で使用すると両方でエラーが取り除かれるため、奇妙です。何故ですか?

また、すべてのFragment拡張クラスをandroid.support.v4.app.Fragment, .DialogFragment, .ListFragment... に変更すると、より高い API でアプリを実行した場合、19 としましょう。アプリは互換性ライブラリを使用しますか、それともその API のクラスを使用することを知っていますか? そして、違いはありますか?

4

1 に答える 1

3

Gingerbread 以下をサポートする必要android.support.v4.app.*あるため、アプリをコンパイルして実行するには Fragment クラスを使用する必要があります。への呼び出しgetFragmentManager()も次のように置き換える必要がありますgetSupportFragmentManager()

呼び出しはandgetSupportFragmentManager()の一部にすぎないことに注意することも重要です(後者は前者の拡張です。Google の ActionBarCompat ライブラリの一部です)。FragmentActivityActionBarActivity

これは、サポート フラグメントが Android システムへの追加であるため、Android 内部にあまり依存せずに実装する方法が必要なためです (Gingerbread 以下には の概念がないためFragment)。

しかし、1つの内部クラス(DialogFragmentsがある)で使用すると、両方でエラーが発生するため、奇妙です。何故ですか?

複数の Android Lint エラーが発生している可能性があります

より高い API でアプリを実行するとどうなりますか

サポート ライブラリは新しい API バージョンでも動作します。もちろん、API 11 以降を必要とする以前のコードがある場合は、それをバックポートする方法も考え出す必要があります。

アプリは互換性ライブラリを使用しますか、それともその API のクラスを使用することを知っていますか?

サポートFragment ドキュメントには次のように記載されています。

Android 3.0 以降で実行する場合、この実装は引き続き使用されます。フレームワークの実装に切り替えようとはしません。

サポートフラグメントは常に使用されます。通常、これは問題ではありません。

于 2013-12-08T00:29:00.297 に答える