164

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

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

PS:私が最も驚いたのは、 !の直接の親クラスAppCompatActivityから拡張されていることです。つまり、できることは何でもできるようになったのに、なぜ Android は後者を押し出したのでしょうか?android.support.v4.app.FragmentActivityActionBarActivityActionBarActivityAppCompatActivity

その間、「からActionBarActivityへの名前変更ではありませんAppCompatActivity。 の内部ロジックAppCompatは経由で利用できますAppCompatDelegate」というブログ投稿を見ましたが、 の「内部ロジック」とはAppCompat何ですか? 何ができAppCompatDelegateますか?誰かがこれについていくつかのコードを投稿できますか?

4

6 に答える 6

146

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

新しい開発を開始する場合は、新しいAppCompatActivityクラスをすぐに使用する必要があります。アプリを更新する機会があれば、deprecatedActionBarActivityも新しいアクティビティに置き換えてください。それ以外の場合は、非推奨のアクティビティにとどまることができ、動作にまったく違いはありません。

に関してAppCompatDelegateは、アクティビティに新しい着色されたウィジェットを含めることができAppCompatActivityますActionBarActivity

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

于 2015-04-30T22:19:02.270 に答える
35

これは主に名前の変更です。現在の機能のActionBarActivityすべてを実際に説明しているわけではありません。ご希望の方は安心してご利用いただけActionBarActivityます。シンボリックリンクのように考えてください。

于 2015-04-22T13:30:06.730 に答える
12

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

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

于 2015-07-31T11:31:23.107 に答える