android.support.v7.app.AppCompatActivity
昨日、最新の v7 サポート ライブラリに新機能として追加されました。
ActionBarActivity
は新しい に取って代わられ、AppCompatActivity
サポートAppCompatActivity
ライブラリのアクション バー機能を使用するアクティビティの基本クラスになったと言われています。では、 の新機能は何でしょうか? にはどのような機能強化が加えられていますか? の利点は何でしょうか? 誰かサンプルをいくつか提供してもらえませんか?AppCompatActivity
ActionBarActivity
AppCompatActivity
ActionBarActivity
AppCompatActivity
追伸:私が一番驚いたのは、AppCompatActivity
から拡張された が のandroid.support.v4.app.FragmentActivity
直接の親クラスだということですActionBarActivity
。つまり、実際に でできることはActionBarActivity
すべて でできるのにAppCompatActivity
、なぜ Android は後者を押しのけたのでしょうか。
一方、私は次のようなブログ記事を見ました。「ActionBarActivity
これは からへの名前変更ではなくAppCompatActivity
、 の内部ロジックはAppCompat
以下から利用できます。AppCompatDelegate
「では、内部ロジック「のAppCompat
?何ができるでしょうかAppCompatDelegate
?誰かこれに関するコードを投稿してもらえませんか?」
ベストアンサー1
ActionBarActivity
Chris が書いたように、 (クラスを拡張する)の非推奨バージョンの new は、下位互換性のあるクラスとして安全に使用できます。その非推奨は、代わりにAppCompatActivity
new を直接使用するように求めるためのヒントにすぎません。は、クラスを内部的に使用する、新しい、より汎用的な実装です。AppCompatActivity
AppCompatActivity
AppCompatDelegate
新しい開発を開始する場合は、新しいAppCompatActivity
クラスをすぐに使用する必要があります。アプリを更新する機会がある場合は、非ActionBarActivity
推奨のアクティビティも新しいアクティビティに置き換えてください。それ以外の場合は、非推奨のアクティビティをそのまま使用しても、動作に違いはありません。
に関しては、またはAppCompatDelegate
ではないアクティビティに新しい色付きウィジェットを追加できます。AppCompatActivity
ActionBarActivity
例えば、外部ライブラリからアクティビティを継承すると、ないを継承しますAppCompatActivity
が、このアクティビティに色付きのマテリアル ウィジェット (ビュー) を持たせたいとします。これを実現するには、AppCompatDelegate
アクティビティ内に のインスタンスを作成し、 などのそのアクティビティのメソッドをオーバーライドしますaddContentView()
(setContentView()
メソッドAppCompatDelegate
の完全なリストについては javadoc を参照)。オーバーライドされたメソッド内で、呼び出しを内部インスタンスに転送しますAppCompatDelegate
。AppCompatDelegate
が残りの処理を行い、「旧式の」アクティビティが「実現化」されます。