5

[このリンク][1]のようなこの問題に関する多くの投稿を読みました。1つの解決策は、回転時にonCreateアクティビティが再度呼び出されないように、onConfigurationChangedイベントをマニフェストして処理するためにorientationconfigChangesを追加することです。私はそれを行い、イベントは適切にトリガーされましたが、この実行後、onCreateメソッドも実行されます!なぜ?私が欠けているものは何ですか?ありがとうございました

マニフェスト、

<activity 
            android:name="webPush"
            android:configChanges="keyboardHidden|orientation"/>

アクティビティ、

@Override
    public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      setContentView(R.layout.vistaaib);
    }

@Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.vistaaib);
...
4

6 に答える 6

11

これでうまくいくと思います........。

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

Android 3.2(APIレベル13)以降、デバイスが縦向きと横向きを切り替えると、「画面サイズ」も変化します。したがって、APIレベル13以上で開発するときに方向の変更によるランタイムの再起動を防ぎたい場合は、次を使用する必要があります。

android:configChanges="orientation|screenSize"
于 2012-07-01T09:07:54.957 に答える
2

これは私がしました。このコードをマニフェストに追加しましたが、完璧に機能します。

<activity
        android:name="?"
        android:label="@string/?"
        android:theme="@style/?" 
        android:configChanges="orientation|screenSize">

デバイスが回転しているときに何かを変更したい場合は、アクティビティの下にこれを追加する必要があります。

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}
于 2013-05-05T12:15:08.347 に答える
1

この2行のコードを、そのアクティビティのマニフェストファイルに記述します。

これで問題が解決するようです。<activity android:name=".YourActivity" android:configChanges="orientation|keyboardHidden"/>

于 2012-07-01T08:58:28.287 に答える
1

構成を変更すると、アクティビティが再開されます。キーボードの状態が変化したため、再起動されている可能性があります。これをアクティビティの属性に追加してみてください。

android:configChanges="orientation|keyboard|keyboardHidden"
于 2012-07-01T08:58:52.060 に答える
0

APIレベル12以下で作業している場合

メニフェストファイルには、アクティビティ名を宣言した直後に以下を入れてください。

    android:configChanges="orientation"

例えば-

    <activity
        android:name=".NameOfYourActivity"
        android:configChanges="orientation"/>

また、Android 3.2(APIレベル13)以降では、回転の変更に応じて画面サイズも変更されるため、これも宣言してください。

このため、

    android:configChanges="orientation|screenSize"
于 2012-10-11T12:12:56.793 に答える
0

以下が理由かもしれません

イベント:screenSize

現在利用可能な画面サイズが変更されました。これは、現在のアスペクト比に対する現在利用可能なサイズの変化を表すため、ユーザーが横向きと縦向きを切り替えると変化します。ただし、アプリケーションがAPIレベル12以下を対象としている場合、アクティビティは常にこの構成変更自体を処理します(Android 3.2以降のデバイスで実行している場合でも、この構成変更によってアクティビティが再開されることはありません)。APIレベル13で追加されました。

したがって、「orientation」とともに「screenSize」も追加します

于 2013-08-23T13:31:30.407 に答える