1. ホーム
  2. アンドロイド

[解決済み】Activity、AppCompatActivity、FragmentActivity、ActionBarActivity。いつ、どれを使用しますか?

2022-03-29 21:51:40

質問

私はiOSから来たのですが、簡単で、単にUIViewControllerを使えばいいのです。しかし、Androidでは、特定のAPI Levelsのための特定のUIComponentで、物事ははるかに複雑なようです。私はBigNerdRanch for Android(この本は約2年前のものです)を読んでいますが、彼らは私に次のものを使うよう勧めています。 Activity をホストするために FragmentActivities . しかし、私は Activity は非推奨とした。

API Level 22 (最低限API Level 15または16をサポート) では、コンポーネントをホストするために、そしてコンポーネントそのものに、一体何を使えばいいのでしょうか?それとも、1つか2つのみを使うべきでしょうか?

どのように解決するのですか?

<ブロッククオート

アクティビティは廃止されたと思っていた

いいえ。

API Level 22 (最低限API Level 15または16をサポート) では、コンポーネントをホストするために、そしてコンポーネントそのものに、一体何を使えばいいのでしょうか?それとも、1つか2つのみを使用すべきでしょうか?

Activity がベースラインです。すべてのアクティビティは Activity 直接または間接的に、です。

FragmentActivity で見つかったフラグメントのバックポートで使用するためのものです。 support-v4support-v13 ライブラリを使用します。フラグメントのネイティブ実装はAPI Level 11で追加されており、あなたの提案する minSdkVersion の値を設定します。を考慮する必要がある唯一の理由は FragmentActivity これは、API Level 17 まではネイティブフラグメントでサポートされていなかったためです。

AppCompatActivityappcompat-v7 ライブラリです。主に、アクションバーのバックポートを提供します。API Level 11 でネイティブのアクションバーが追加されたため、アクションバーのバックポートに AppCompatActivity そのために しかし、現在のバージョンでは appcompat-v7 また、アクションバーやさまざまなウィジェットの点で、Material Designの美学の限定的なバックポートが追加されています。を使用することには、長所と短所があります。 appcompat-v7 このStack Overflowの回答の範囲をはるかに超えています。

ActionBarActivity は、ベースとなるアクティビティの旧名称で appcompat-v7 . 様々な理由で、名前を変えたいと思ったのでしょう。あなたが使っているサードパーティのライブラリが ActionBarActivity を選択する必要があります。 AppCompatActivity オーバー ActionBarActivity .

ということは、あなたの minSdkVersion を15-16の範囲にする。

  • バックポートされたマテリアルデザインの外観が必要な場合は AppCompatActivity

  • そうではなく、ネストされたフラグメントが必要な場合は FragmentActivity

  • そうでない場合は Activity

コメントからメモとして追加しただけです。 AppCompatActivity が拡張されます。 FragmentActivity の機能を使用する必要がある場合、その人は FragmentActivity を使用することができます。 AppCompatActivity .