0

ActionBarCompat サポート ライブラリを使用して動的フラグメントを作成する際に問題はありますか?

私は、ActionBarSherlock (重要な場合は v4.4) の使用から ActionBarCompat サポート ライブラリの使用に変換するアプリケーションを持っています。Android 2.2 以降のすべてのバージョンで問題なく動作しました。ActionBarCompat サポートを使用するように変換し、ActionBarSherlock から新しいサポート ライブラリまでのすべての違いを考慮した後も、まだ 1 つの問題が残っています。

私のアプリケーションは 4.x デバイスとエミュレーターを使用して素晴らしく動作しますが、2.2 を実行しているデバイスとエミュレーター (まだ 2.3 を試していません) でそれを実行すると、私が作成するアクティビティは次のパターンを使用してフラグメントを追加します。フラグメントは画面全体を占有し、アクション バーは表示されませんが、表示されます (getSupportActionBar() から null 以外を返します)。

    getSupportFragmentManager()
            .beginTransaction()
            .add(android.R.id.content, frag)
            .commit();

レイアウトで setContent を使用して作成されたすべてのフラグメントは正常に機能します。

考え?

4

2 に答える 2

1

android.R.id.content を使用する代わりに、独自のコンテナーを作成します。Android 2.3.3 は、ActionBar をルート ビュー要素に追加します。ここで、4+ はルート ビューの外に追加します。

サポート ライブラリを備えた ActionBar タブ

于 2013-09-03T13:56:04.957 に答える
0

Android のドキュメントを読んだ後、ActionBarShelock と 4.x で正常に機能していたものが、ActionBarCompat を使用する 2.x では機能しませんが、明示的に文書化されていません。

アクティビティが setContentView() なしで作成され、フラグメントが追加された場合

getSupportFragmentManager() .beginTransaction() .add(android.R.id.content, frag) .commit();

そのフラグメントは、2.2 (およびおそらく他の Android バージョン) の ActionBar をカバーします。シンプルなレイアウトで明示的な setContentView を使用し、そのレイアウトにフラグメントを追加すると、すべての Android バージョンで機能します...

于 2013-09-03T14:12:28.077 に答える