1

デバイスを回転させたときにレイアウトを変更したいだけです。しかし、onConfigurationChanged()は、* _ land.xmlという名前の分離されたレイアウトでsetContentViewを使用してonCreate()を再度呼び出す必要があることがわかりました。

if(getActivity().getWindowManager().getDefaultDisplay().
getRotation() == Surface.ROTATION_0)
view = inflater.inflate(R.layout.fragment_layout, null);
else view = inflater.inflate(R.layout.fragment_layout_land, null);

プロジェクトが大きすぎて、finish()なしでonCreateを再度実行すると、修正するコードがたくさんあります。

誰かがこれを手伝って欲しいです。

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

-> onConfigurationChangedの概念はレイアウトを維持することだと思います

4

4 に答える 4

4

これはもはや関心事ではありません

onConfigurationChanged() は、layout-land フォルダーのメカニズムでは使用できません。これは、コールバックの概念がレイアウトを維持するためです。そのため、このメソッドを使用したアクティビティは、ランドスケープ レイアウトをインフレートする必要があります。

于 2012-09-03T14:46:10.917 に答える
0

ランドスケープのレイアウトを自分で呼び出す必要はありません。Androidのフォルダー構造に従うと、自動的に呼び出されます。

レイアウト名が「main.xml」であるとすると、

1つのmain.xmlファイルをlayoutフォルダーに、もう1つをlayout-landフォルダーに保持します。そのため、ランドスケープモードの場合、システムはレイアウトランドフォルダからレイアウトを自動的に選択します。

疑問がある場合は、このリンクを確認してください。

于 2012-08-31T05:54:06.287 に答える
0

layout フォルダー内の main.xml と同じ名前の res フォルダー内の layout-land フォルダー (デフォルトでは作成されません) に main.xml を作成するだけです。ただし、線形のレイアウト タグを変更します。つまり、layout-land フォルダーにある main.xml の垂直の代わりに水平にします。

このすべての後、単に呼び出すだけSetContentView(R.layout.main);です。そして魔法を見てください、あなたのアプリケーションは動くでしょう。Android マニフェスト ファイルにも変更を加えます。つまり、アクティビティ タグでコメントandroid:screenOrientation="portrait"行を作成します。

于 2012-08-31T06:06:00.237 に答える