0

この質問について他の多くの投稿を見てきましたが、最も一般的な解決策は、マニフェストに次のものがあることを確認することです。

<activity android:name=".activities.myActivity" 
        android:configChanges="orientation|keyboard|keyboardHidden|screenSize">

このサブは既にマニフェストにあり、アクティビティの向きを強制的に横向きまたは縦向きにするつもりはありませんが、onConfigurationChanged(...) は呼び出されません。

私の onConfigureationChanged(...) 関数は次のとおりで、logcat の出力が表示されません。

@Override
public void onConfigurationChanged(Configuration newConfig) {

    Logger.e(getClass().getSimpleName(), "onConfigurationChanged()");

    super.onConfigurationChanged(newConfig);
}

また、onCreate() と onPause() にロガーを追加して、アクティビティが標準的なライフ サイクルを経ていないことも確認しました。

4

1 に答える 1

0

OnConfigurationChanged は、AndroidManifest.xml で指定された構成が変更された場合にのみ呼び出されます。たとえば、このメソッドは画面の向きが変更された後に呼び出されます。私が理解していれば、アプリの構成は変更されていません。

Androidのドキュメントから:

たとえば、次のマニフェスト コードは、画面の向きの変更とキーボードの可用性の変更の両方を処理するアクティビティを宣言します。

<activity android:name=".MyActivity"
      android:configChanges="orientation|keyboardHidden"
      android:label="@string/app_name">

現在、これらの構成のいずれかが変更された場合、MyActivity は再起動しません。代わりに、MyActivity は onConfigurationChanged() への呼び出しを受け取ります。このメソッドには、新しいデバイス構成を指定する Configuration オブジェクトが渡されます。

于 2012-11-20T19:11:32.937 に答える