ActionBarActivityに対するAppCompatActivityの拡張とは何ですか?


164

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

ActionBarActivity新しいライブラリのために非推奨にAppCompatActivityなりAppCompatActivity、サポートライブラリのアクションバー機能を使用するアクティビティの基本クラスであると言われています。では、AppCompatActivityoverの新機能は何ActionBarActivityですか?どのような拡張機能がAppCompatActivityありActionBarActivityますか?そして、何の利点がありAppCompatActivityますか?誰かがいくつかのサンプルを提供できますか?

ヒントがあれば大歓迎です。そして、事前に感謝します。

PS:私を最も驚かせたのは、AppCompatActivity拡張されたものandroid.support.v4.app.FragmentActivityはの直接の親クラスですActionBarActivity!私が実際にActionBarActivityできることは何でもAppCompatActivityできるということですが、なぜAndroidは後者を押し出したのですか?

一方、「はからActionBarActivityへの名前変更AppCompatActivityAppCompatはありません。の内部ロジックはを介して利用できますAppCompatDelegate。したがって、の「内部ロジック」はAppCompat何ですか?というブログ投稿を見ました。何ができるAppCompatDelegate?誰かがこれに関するコードを投稿できますか?



読んだのですが、紹介ですが浅すぎます。
SilentKnight 2015

1
AppCompatActivityはActionBarActivityの親クラスです。さらにアイデアを得るには、コードを調べる必要があります。
Pankaj Kumar

はい、気づきました。
SilentKnight 2015

回答:


145

Chrisが書いたように、ActionBarActivity(1つの拡張AppCompatActivityクラス)の新しい非推奨バージョンは、下位互換性クラスを使用しても安全です。その廃止は、AppCompatActivity代わりにnewを直接使用するように求めるヒントにすぎません。内部でクラスAppCompatActivityを使用する、新しい、より一般的な実装AppCompatDelegateです。

新しい開発を開始する場合は、AppCompatActivityすぐに新しいクラスを使用する必要があります。アプリを更新する機会がある場合は、廃止予定ActionBarActivityの新しいアクティビティに置き換えてください。それ以外の場合は、廃止されたアクティビティをそのまま使用でき、動作に違いはありません。

AppCompatDelegateそれはあなたがどちらのある活動、新たな着色ウィジェットを持つことができAppCompatActivityActionBarActivity

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


良い例..ありがとう@ sergej shafarenka
Rakesh L

2
Appcompactivityの代わりにActivityを使用するとどうなりますか?検索しましたが、解決策はありませんでした。助けてください
Ravindra Kushwaha

35

これは主に名前の変更ですActionBarActivity。現在のすべてのことを実際に説明しているわけではありません。ActionBarActivity必要に応じて安全にお使いいただけます。シンボリックリンクのように考えてください。


AppCompatActivityの直接の親クラスですがActionBarActivity、これでActionBarActivityできることは何でもAppCompatActivityできるようになりましたが、なぜAndroid後者をプッシュしたのですか?
SilentKnight 2015

4
@SilentKnight:Chrisが書いたように、それはほとんど名前の変更です。Androidデベロッパーブログの引用:「AppCompatサポートライブラリは、控えめですが重要な始まりから始まりました。すべてのAPI 7以降のデバイス用の単一の一貫したアクションバーです。リビジョン21では、マテリアルカラーパレット、ウィジェットの色付け、ツールバーのサポートなど、すべてのAPI 7以上のデバイスに対応しています。そのため、ActionBarActivityという名前では、実際の機能の全範囲をカバーできませんでした。」
CommonsWare 2015

3
非推奨のクラスは将来のバージョンで削除される可能性があるため、使用しても安全ではありませんActionBarActivityサポートライブラリから削除されたとき(たとえば、アプリの更新時)へのすべての参照を簡単に置き換えることができますが、今後は使用しないことをお勧めします。
david.schreiber

12

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

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


..Appcompactivityの代わりにActivityを使用するとどうなりますか?検索しましたが、解決策はありませんでした。助けてください
Ravindra Kushwaha

9

AppCompatActivityandroid support appcompat libraryのリリース以降、Android-SDKに導入されました。

AppCompatActivityFragmentActivityサポートv4 の直接の子クラスとの直接の親クラスですActionBarActivity

AppCompatActivityサポートライブラリのアクションバー機能を使用するアクティビティの基本クラスです。

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

サポートv7 appcompatライブラリについては、アクションバーのユーザーインターフェイスデザインパターンのサポートが追加されています。このライブラリには、マテリアルデザインのユーザーインターフェイス実装のサポートが含まれています。

次に、v7 appcompatライブラリに含まれる主要なクラスのいくつかを示します。

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

Androidサポートライブラリをダウンロードすると、このライブラリは/ extras / android / support / v7 / appcompat /ディレクトリにあります。


どうandroid.support.v4.app.ActivityCompatですか?これはただの古い名前AppCompatActivityですか?
タイラン

7

以前は、への唯一のエントリポイントAppCompatは、現在は非推奨のActionBarActivityクラスを経由していました。残念ながら、これにより、セットのアクティビティ階層を使用せざるをPreferenceActivity得なくなり、使用が不可能になりました。

詳細については、Chris Banessupport-libraries-v22-1-0参照してください


1
クリスのブログです。
SilentKnight 2015

2

アンドロイドサポートライブラリの最新リリース、22.1、非推奨ActionBarActivityの賛成でAppCompatActivity、単一の一貫性を持っている約束を、ActionBarAPIレベル7以上で始まるすべてのデバイスのために

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.