基本テーマ「空白のアクティビティ」で動作するアプリケーションがあり、それを「マスター/詳細フロー」テーマに変更したいと考えています。これにより、アプリケーションが android SDK 11 + (android 3.0 Honeycomb +) で動作するようになることはわかっていますが、それで問題ありません。問題は、どこから始めればよいかわからないことです。この大きな変換を行うための基本的な手順は何ですか? この問題を解決するのに役立つ例が見つかりませんでした。私は何を探しているべきですか。私はこれが完了したと確信しています。少なくともこれを行う方法についての指針を教えていただけますか? 私のアプリケーションはそれほど複雑ではなく、アクティビティ、非同期タスク、DB、カスタム リストなどを使用しています...非常に基本的なものです。カスタムリストを使用してデータを表示し、クリックすると詳細が表示されます。だから私は、「マスター/ディテールフロー」よりも専門的な問題でこれを行うためのより良い方法を考えました. 「マスター/詳細フロー」に関するチュートリアルがあれば、それで私をつなぐことができます。
5 に答える
Android のマスター/ディテール テンプレートに関するチュートリアル - Android マスター/ディテール フロー チュートリアルを次に示します。
私が理解している限り、あなたのアプリケーションは稼働中であるため、もちろん何らかの問題が発生していない限り、アプリケーションを書き直してみる価値があるかどうかはわかりません. :) 一般に、マスター/詳細フローには次の手順が必要です。
ListFragment
アイテムの基本情報を表示する機能を実装するFragment
特定のアイテムに関する詳細情報を表示する実装- 大型デバイス用の xml レイアウト ファイルを作成します (
layout-sw600dp
たとえば、フォルダー内にあります)。このレイアウトでは、両方のフラグメントを配置する必要があります。 layout
ListFragment のみを含む、このレイアウト ファイルの一般的なバージョン (つまり、同じ名前でフォルダー内にあるファイル) を作成します。onItemClick
からのイベントをアクティビティに処理させますListFragment
。アイテムがクリックされるたびに、アクティビティが両方のフラグメントを表示しているか、ListFragment
. 両方が表示されている場合は、新しいアイテムが選択されていることを詳細フラグメントに通知して、そのデータを表示できるようにする必要があります。それ以外の場合は、新しい詳細フラグメントを作成し (もちろん再利用します)、選択したアイテムに関する情報を渡して (アイテムのデータを表示できるように)、ListFragment
を新しいものに置き換える必要があります。
これは基本的な概要ですが、このフローについてある程度の理解を得るには十分なはずです。詳細が必要な場合は、お知らせください。:)
最新バージョンの Android SDK を使用している場合は、新しい Android アプリケーションを作成できるはずです。そのプロセス中に、ウィザードでマスター/詳細フロー アプリを作成することを選択できます。コードを見て必要な部分を理解できるように、基本的な作業アプリを作成します。
次に、アプリの単純さに応じて、現在のすべてのコードを新しいアプリケーションに移動したり、その逆を行ったりすることができます。
発生するマクロの変更:
- 現在のすべてのアクティビティを
extend Fragment
代わりに変更します。 - フラグメントを呼び出すには、FragmentActivity を作成する必要があります。これは基本的に、フラグメントの名前だけが追加された定型コードになります。
- マニフェストを再確認することを忘れないでください。
以前にアクティビティを拡張した変換されたフラグメントで:
- コンテキストが必要なすべての場所で、それを切り替え
getActivty()
ます(またはグローバル変数を作成して、一度だけ呼び出されるようにします) onCreate()
に変更public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mView = inflater.inflate(R.layout.fragment_signals, container, false); setHasOptionsMenu(true); // Add if you want to display a Menu // Your initiation code here return mView; }
メニューがある場合は、次のように変更します。
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.activity_main, menu); super.onCreateOptionsMenu(menu, inflater); }
基本的なアプリケーションは以上です。最初にアクティビティをフラグメントに変更すると、多くのエラーが発生します。しかし、それらはすべて簡単に修正できます。
マスター/詳細フローと空のアクティビティは、アプリのテーマまたはアプリのベース テーマを変更するだけで変更したいものとは異なります。最初に UI フラグメントを使用してマスター/詳細フロー テンプレートを設計し、それに従って空白のアクティビティをマスター テンプレートに統合し、必要な変更を加えるとより効果的です。また、マスター/詳細フローのチュートリアルについては、Google で検索すると、多くの例が見つかります。