質問

こんにちは私はビューページャーとフラグメントで作業しています。 Oncreateviewメソッドがオリエンテーションが変更されるたびに実行されないように、オリエンテーションの変更をオーバーライドしたいと思います。これは、オリエンテーションが変化が遅くなると私のアプリのCreateviewで多くのことが実行されているためです。また、私のサーバー上のものがチェックされており、あまりにも多くないので、オリエンテーションが変わったからといって、すべてが実行される理由はありません。

これが私がこれまでに設定したものです

私はマニフェストのマインアクティビティについてこれを持っています

 android:configChanges="orientation|keyboardHidden"

そして、私はこれを私のフラグメントで使用しています

@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
    getLayoutInflater(getArguments()).inflate(R.layout.main, null, false);
    Toast.makeText(getActivity(), "changed orientation", Toast.LENGTH_LONG).show();
}

アプリとスイッチの向きを実行すると、トーストショーが表示されますが、レイアウトがランドスケープ1に変更されることはありません。だから私は、おそらくAndroidはそれが過剰に構築されて以来、それが風景にあることを認識していなかったかもしれないが、ダイアログのレイアウトのようなばかげた何かにレイアウトを変更することは、力が近づくか、伸びるポートレートレイアウトを維持するものではないと判断しましたその結果、私はレイアウトを膨らませていることに何か問題があることを知っています。

視点でオリエンテーションが変更されたときのレイアウトの変更に関するヘルプは大歓迎です。

ありがとうございました!

役に立ちましたか?

解決

1)oncreateview()ではなく、すべてのサーバーチェックルーチンおよびその他の1回限りの操作をフラグメントoncreate()に配置する必要があります。ロード中にある種の「ロード...」画面を表示する必要がある場合は、使用することをお勧めします。 断片的な性 少なくともaでレイアウトを膨らませる framelayout 「ロード...」タイプのグラフィックが含まれています。まず、フラグメントアクティブはoncreate()を実行し、最初に最初のビューを膨らませ、次にフラグメントをインスタンス化します。サーバーのチェックコードをフラグメントのoncreate()に配置し、そのoncreateview()メソッドのこのフラグメントのビューを膨らませます。これは、マイクボタンを初期化する私のプロジェクトの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()を使用して、必要なすべての場所でフラグメントが正しくインスタンス化されるようにすることができます。

私のアプリケーションが実際にどのように機能するかなど、フラグメント内にフラグメントをロードしようとしている場合は、このコードを少しマッサージできます。いくつかの可能なビューの1つを膨らませるフラグメントがある場合は、IFステートメントを使用して適切なフレームIDを選択し、一意のfrag_tagを指定します。フラグメントのために作成した各framelayoutに個別のr.idを使用することをお勧めします。 (たとえば、このフラグメントが情報、ハム、歌詞のためにさまざまなビューを膨らませる可能性がある場合、各マイクのフラグメントの私のタグ名は MetamicButton, ハムマイクボタン, 、 と 歌詞micbutton. 。 r.id.meta_mic_button_frameなどを選択する必要があります。)

2)ポートレートモードとランドスケープモードを切り替えている場合、フォルダーのres/layoutとres/layout_landで異なるXMLレイアウトを定義する必要があります。 (または、ランドスケープモードがデフォルトであると考えたい場合は、RES/レイアウトとRES/LAYOUT_PORTを作成できます)。このリンクを確認してください: http://developer.android.com/guide/topics/resources/providing-resources.html#alternativeresources 画面サイズ、言語、ドックモード、ナイトモード、およびその任意の組み合わせに基づいて、さまざまなレイアウトを定義できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top