複数のアクティビティ間で共有したいボタン付きのナビゲーション バーがあります。
現在、同じアクティビティを開始すると (たとえば、LOST.DIR をクリックすると)、ナビゲーション バーを含む画面全体が変わります (フォルダーの新しいリストが表示されます)。
ナビゲーション バーを静的に保ちたい (同じアクティビティ タイプ間で保持し、新しいアクティビティを開始した後に変更または再表示しないようにするため)。
これは可能ですか?
複数のアクティビティ間で共有したいボタン付きのナビゲーション バーがあります。
現在、同じアクティビティを開始すると (たとえば、LOST.DIR をクリックすると)、ナビゲーション バーを含む画面全体が変わります (フォルダーの新しいリストが表示されます)。
ナビゲーション バーを静的に保ちたい (同じアクティビティ タイプ間で保持し、新しいアクティビティを開始した後に変更または再表示しないようにするため)。
これは可能ですか?
1 つのアクティビティとフラグメントを使用したいようです。
ただし、本当に複数のアクティビティを使用する必要がある場合。もう 1 つの方法は、アクションバーを使用して (これにはactionbarsherlockが最適です)、さまざまなアクティビティ間でメニューを切り替えることです。メニュー ドロップダウンは、アクション バーのアイコンのリストか、アクションバーの右上にあるドロップダウン スピナーのいずれかです。このアクションバーは、アクティビティ全体で静的であり、同じカテゴリのリスト (つまり、ナビゲーション バーのもの) で構成されます。
すぐにではありません。アクティビティは、必要なものとは正反対です。アクティビティは、独立したインターフェイスの一部です。
アクティビティを使用するFragments
か、マスター アクティビティに埋め込むことができます。TabHost
たとえば、これを行います。
完全な制御の 1 つのアプローチは、LinearLayout をコンストラクター引数として取り、各ボタンの可視性、クリック ディスパッチ (デリゲート経由)、画像などを処理する独自のカスタム クラスを作成することです。
上記のすべてと必要なその他の機能を実行するメソッドを追加します。
各アクティビティ レイアウトで、layout.xml とそれを作成します。
各アクティビティでボタン バー クラスをインスタンス化し、コンテンツ ビューで findViewById を使用して取得したレイアウトへの参照を渡します。
他の人が言ったように、既存の解決策があり、「なぜ新しい車輪を発明するのか」と尋ねるかもしれません。多くのプロジェクトで使用しているクラスがあり、バージョン 1 を作成するのは大変な作業でしたが、今では簡単に完全に制御、追加、修正、カスタマイズできるクラスができました。
このようなもの:
bar.setButtonClickHandler(Button.Favourites, favouritesButtonClickHandler);
bar.setButtonVisibility(Button.Edit, View.INVISIBLE);
等
私は LinearLayout を使用しましたが、何か他のものを使用する必要がある場合は、RelativeLayout 引数などを受け入れるようにコンストラクターをオーバーロードするのは簡単なことです。