1) すべてのサーバー チェック ルーチンとその他の 1 回限りの操作は、onCreateView() ではなく Fragment onCreate() に配置する必要があります。読み込み中に何らかの「読み込み中...」画面を表示する必要がある場合は、FragmentActivityを使用して、少なくとも「読み込み中...」タイプのグラフィックを含むFrameLayoutでレイアウトを膨らませることをお勧めします。最初に FragmentActivity が onCreate() を実行し、最初の View を最初にインフレートしてから Fragment をインスタンス化します。サーバー チェック コードを Fragment の onCreate() に配置し、onCreateView() メソッドでこの Fragment の View をインフレートします。これは、実際にはフラグメントであるマイク ボタンを初期化する私のプロジェクトの 1 つのサンプルです。
<FrameLayout
android:id="@+id/recorder_mic_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
次に、マイク フラグメントは次の Java コードによって実際にインスタンス化されます。
// make the Mic button
FragmentManager fragMgr = getFragmentManager();
FragmentTransaction xact = fragMgr.beginTransaction();
if (null == fragMgr.findFragmentByTag(FRAG_TAG)) {
xact.add(R.id.mic_button_frame, MicFragment.newInstance(queryType), FRAG_TAG).commit();
}
FRAG_TAG は実際には、フラグメントの R.id とは異なるフラグメント インスタンスに指定する一意のタグ名です。このように、findFragmentByTag() を使用して、必要なすべての場所でフラグメントが正しくインスタンス化されるようにすることができます。
私のアプリケーションが実際にどのように機能するかのように、フラグメント内にフラグメントをロードしようとしている場合は、このコードを少しマッサージすることができます。考えられるいくつかのビューのいずれかをインフレートするフラグメントがある場合は、if ステートメントを使用して適切なフレーム ID を選択し、一意の FRAG_TAG を指定します。フラグメント用に作成する FrameLayout ごとに個別の R.id を使用することをお勧めします。(たとえば、この Fragment が Info、Hum、および Lyrics の異なるビューをインフレートする可能性がある場合、各マイク フラグメントのタグ名はMetaMicButton、HumMicButton、およびLyricsMicButtonになります。R.id.meta_mic_button_frame と R.id.meta_mic_button_frame の間で選択する必要もあります。すぐ。)
2) 縦向きモードと横向きモードを切り替える場合、res/layout フォルダーと res/layout_land フォルダーに異なる XML レイアウトを定義する必要があります。(または、横向きモードをデフォルトと見なしたい場合は、 res/layout と res/layout_port を作成できます)。このリンクを確認してください: http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources画面サイズ、言語、ドック モード、ナイト モード、およびそれらの任意の組み合わせに基づいて、さまざまなレイアウトを定義できます。 .