web-dev-qa-db-ja.com

ActionBarActivityよりAppCompatActivityの機能強化は何ですか?

昨日の新機能として、Android.support.v7.app.AppCompatActivityが最新のv7サポートライブラリに追加されました。

ActionBarActivityname__は新しいAppCompatActivityname__のために廃止予定であり、AppCompatActivityname__はサポートライブラリのアクションバー機能を使用するアクティビティの基本クラスであると言われています。それで、AppCompatActivityname__に対するActionBarActivityname__の新機能は何ですか? AppCompatActivityname__はActionBarActivityname__に対してどのような機能強化がありますか? AppCompatActivityname__の利点は何ですか?誰かがいくつかのサンプルを供給できますか?

任意のヒントは大歓迎です。そして事前に感謝します。

シモンズ:私が最も驚いたのは、Android.support.v4.app.FragmentActivityから拡張されたAppCompatActivityname__がActionBarActivityname__の直接の親クラスだということです! ActionBarActivityname__がAppCompatActivityname__にできることなら何でもできるのですが、なぜAndroidが後者を押し出したのでしょうか。

一方、「ActionBarActivityNAME__からAppCompatActivityNAME__へのリネームではない、AppCompatNAME__の内部ロジックはAppCompatDelegateNAME _を介して利用可能です)というブログ記事を見たので、[内部ロジック "of AppCompatname__? AppCompatDelegatename__にできることは何ですか?誰かがこれについていくつかのコードを投稿できますか?

162
SilentKnight

Chrisが書いたように、新しい非推奨バージョンのActionBarActivityAppCompatActivityクラスを拡張するもの)は、後方互換クラスを使用するのに安全です。その廃止は、新しいAppCompatActivityを直接使用するようにお願いするためのヒントにすぎません。 AppCompatActivityは、内部的にAppCompatDelegateクラスを使用する、より一般的な新しい実装です。

もしあなたが新しい開発を始めるのであれば、すぐに新しいAppCompatActivityクラスを使うべきです。アプリを更新する機会がある場合は、廃止予定のActionBarActivityを新しいアクティビティに置き換えてください。そうでなければあなたは廃止予定の活動を続けることができ、全く行動の違いはありません。

AppCompatDelegateに関しては、アクティビティ内に新しい色付きのウィジェットを作成することができます。これはAppCompatActivityでもActionBarActivityでもありません。

たとえば、外部ライブラリからアクティビティを継承します。外部ライブラリは、AppCompatActivityから継承したnotを継承しますが、このアクティビティにはマテリアルウィジェット(ビュー)を着色します。これを実現するには、アクティビティ内にAppCompatDelegateのインスタンスを作成し、addContentView()setContentView()などのアクティビティのメソッドをオーバーライドし(メソッドの完全なリストについてはAppCompatDelegate javadocを参照)、それらのオーバーライドされたメソッドの内部に呼び出しを転送します。内側のAppCompatDelegateインスタンス。 AppCompatDelegateが残りを行い、あなたの "昔ながらの"活動は "実体化"されます。

143

これは主に名前の変更です:ActionBarActivityは、実際に行われていることすべてを説明しているわけではありません。望むなら安全にActionBarActivityを使うことができます。シンボリックリンクのように考えてください。

35
Chris Banes

AppCompatサポートライブラリは、控え目で重要な始まりから始まりました。すべてのAPI 7以降のデバイス用の単一の一貫したアクションバーです。リビジョン21では、新しい責任を引き受けました。それは、マテリアルカラーパレット、ウィジェットの色付け、ツールバーのサポート、その他すべてのAPI 7+デバイスへの提供です。それで、ActionBarActivityという名前は、実際に行ったことの全範囲を実際にはカバーしていませんでした

http://Android-developers.blogspot.it/2015/04/Android-support-library-221.html

12
AndroidGecko

AppCompatActivity Android-SDK に導入されました/ Androidサポートappcompatライブラリ

AppCompatActivityは、サポートv4のFragmentActivityの直接の子クラスおよびActionBarActivityの直接の親クラスです。

AppCompatActivityは、 supportライブラリアクションバー featuresを使用するアクティビティの基本クラスです。

APIレベル7以上で実行している場合はアクティビティにActionBarを追加できます - このクラスをアクティビティ用に拡張し、アクティビティのテーマを Theme.AppCompat または同様のテーマに設定します。

サポートv7 appcompatライブラリに関しては、それは Action Bar /ユーザーインターフェースデザインパターンのサポートを追加します。このライブラリは 材料設計 ユーザインタフェース実装のサポートを含みます。

V7 appcompatライブラリに含まれている主なクラスは次のとおりです。

  • ActionBar - アクションバーのユーザーインタフェースパターンの実装を提供します。
  • AppCompatActivity - Support Libraryアクションバー implementationを使用するアクティビティの基本クラスとして使用できるアプリケーションアクティビティクラスを追加します。
  • AppCompatDialog - AppCompat をテーマにしたダイアログの基本クラスとして使用できるダイアログクラスを追加します。
  • ShareActionProvider - アクションバーに含めることができる標準化された共有アクション(電子メールやソーシャルアプリケーションへの投稿など)のサポートを追加します。

Android Support Libraries をダウンロードした後、このライブラリは/ extras/Android/support/v7/appcompat /ディレクトリにあります。

9
SilentKnight

以前は、AppCompatへの唯一のエントリポイントは、現在は非推奨のActionBarActivityクラスによるものでした。残念なことに、これはPreferenceActivityを使うことを不可能にするようなセットActivity階層を使うことをあなたに強いました。

詳細については、chris banesの support-libraries-v22-1-0 を参照してください。

7
null pointer

Androidサポートライブラリの最新リリース22.1では、ActionBarActivityname__が廃止され、AppCompatActivityname__がAPIレベル7以降のすべてのデバイスに対して単一の一貫性のあるActionBarname__をもたらすことを約束しています。

2
Arpit Gandhi