1

SDK 7 で TabHost を使用して Android アプリケーションを開発しています。

私の問題は、画面の向きを変更するハンドラーが機能しないことです。これはシナリオです:

  • 縦から横、またはその逆に切り替えると、画面が適切に更新されます。
  • 黒い画面 (スクリーン セーバー) がオンになっているか、ロック ボタンを押しても、画面が更新されません。

画面の更新に「失敗する」とは、次のことを意味します。

  • ランドスケープモードのときは、ロックボタンを押します。その後、ポートレート モードでロックを解除すると、ポートレート画面が完全に更新されます。しかし、横向きモードに回転すると、横向きモードで画面が更新されません。もう一度縦向きに回転させてからもう一度横向きに回転させると、横向きモードは完全に更新されます。ポートレート モードでロック ボタンを押すと、上記のような失敗シナリオは発生しません。

これは私が使用した方法です:

  • 私は適用android:configChanges="keyboardHidden|orientation"します: すべてのシーン (TabActivity とその各子の両方)
  • 適用:onConfigurationChanged()すべての子画面で
  • ランドスケープ解像度 (layout-res と drawable-land) は使用しませんでした。したがって、画面 (横向きと縦向き) に 1 つの xml レイアウトのみを使用します。

私の問題に対する提案や回避策はありますか? 私はすべての提案に感謝し、試してみます。ありがとう:D

4

1 に答える 1

0

解決策は、構成の変更を適切に処理することです。configChanges の使用は、非常に特殊な状況の最適化にすぎませんが、アクティビティの状態が保存され、メモリの負荷を軽減するためにアクティビティが破棄された場合に備える必要があります。

アクティビティで:

@Override
public void onSaveInstanceState(Bundle outState) {
    // Put any temporary state for this Activity instance
    // into the outState bundle
}

次に onCreate() で:

@Override
public void onCreate(Bundle savedInstanceState) {
    if (savedInstanceState != null) {
        // Retrieve and reassign any state that you saved
    }
}

ランタイム変更の処理も参照してください

于 2014-07-30T23:10:12.263 に答える