0

このアプリには、縦向きと横向きの両方が必要です。ここでは、横向きのリソース フォルダーに「layout-land」フォルダーを作成しています。オリエンテーション アクティビティを行っている間、「layout-land」から XML を取得していますが、アクティビティは再開されています。

したがって、再起動を避けるために、マニフェストでは次の権限を使用しています。

<android:configChanges="keyboardHidden|orientation|screenSize">

上記のアクセス許可を使用している間、アクティビティは再開されませんが、「layout-land」フォルダーから XML を取得できません。

ここで必要なこと:
1. アクティビティの再開を避ける
2. 「layout-land」フォルダから XML を取得するアクティビティを作成します。私はアンドロイドが初めてです。これで私を助けてください。よろしくお願いします。

4

3 に答える 3

2

それがAndroidの仕組みです。次の 3 つのオプションのいずれかを選択する必要があります。

  1. ポートレートとランドスケープにまったく同じレイアウトを使用します。その後、上記のように使用できますconfigChanges。これは、レイアウトの大部分を同じに保ち、向きに基づいていくつかのアイテムを表示/非表示にすることができれば、いくつかの小さな変更があったとしても機能します。

  2. さまざまなレイアウトを使用してください。その後、 を保持できますが、古いビューからすべての値を取得して新しいビューに追加するなどconfigChanges、新しいレイアウトのロードを自分で実装する必要がありますonConfigurationChanged(実行時に設定されたもの: テキスト値、ユーザーが入力した編集テキスト) 、チェック ボックスの状態など)。

  3. configChangeマニフェストから行を削除し、 と を実装onSaveInstanceStateonRestoreInstanceStateます。これら 2 つは、必要な値を保存し、アクティビティの再開時にそれらを復元する機会を与えてくれます。基本的には 2 つと同じですが、ビューを手動でリセットする必要はありません。

可能であれば1を強くお勧めします。ランドスケープ固有のレイアウトを使用する必要がある場合は、ルート 3 に行くのが最も簡単です。私は通常、configChanges を設定するのが大好きですが、まったく異なるランドスケープ レイアウトが必要な場合はうまく機能しません。

于 2013-04-06T08:12:40.717 に答える
0

以下を使用してみてください。

   <uses-sdk android:targetSdkVersion="15"/>
<activity android:configChanges="orientation|screenSize|keyboardHidden" />

Android 4.0.4 を実行している Galaxy Nexus で方向を切り替えても、アクティビティが再開されません。

于 2013-04-06T08:20:56.860 に答える
0

あなたのアンドロイドメニフェストでこれを使用してください

android:configChanges="orientation|screenSize|keyboardHidden"

無指定をご希望の場合

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
于 2013-04-06T08:26:48.873 に答える