15

キーワード、フィルター、検索ボタン用の 1 つのタブと、さまざまな種類の結果用の 3 つのオプション タブ (それぞれに と を含む) を持つ検索画面を作成しましListViewArrayAdapter。アクティビティの開始時にParcelable[]、検索がすでに実行されている場合、開発者は必要に応じて結果を追加で渡すことができます。このonCreate()メソッドでは、パススルー用の 3 つのタブをそれぞれ作成していParcelable[]ます。

フィルター タブのボタンから検索を呼び出すと、タブをクリアし、新しい結果でそれらを再作成します。これは完全に機能します。問題は、デバイスを回転させると、Android の自動方向切り替えサポートがアクティビティ全体を再作成し、 を呼び出しているように見えることonCreate()です。これはParcelable[]、アクティビティの開始時に検索結果がパススルーにリセットされることを意味します。

私がこれまでに持っていた唯一の解決策は、新しい結果でアクティビティを本質的に再開するために呼び出すfinish()ことstartActivity()です。もっと簡単な解決策が必要であり、私は非常に愚かなことをしたと確信しています。

これを行うより良い方法はありますか?

4

3 に答える 3

33

もちろんあります。次のように、configChanges 属性を AndroidManifest.xml に追加するだけです。

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

回転時にアクティビティを再起動 Android Android で向きの変更を無効にするにはどうすればよいですか? http://developer.android.com/guide/topics/manifest/activity-element.html#config

于 2010-06-22T23:55:48.290 に答える
15

あなたが説明するのはデフォルトの動作です。以下を追加して、これらのイベントを自分で検出して処理する必要があります。

android:configChanges

マニフェストに追加してから、処理する変更を追加します。したがって、オリエンテーションには、次を使用します。

android:configChanges="orientation"

キーボードを開いたり閉じたりするには、次を使用します。

android:configChanges="keyboardHidden"

両方を処理したい場合は、次のようなパイプ コマンドでそれらを分離できます。

android:configChanges="keyboardHidden|orientation"

onConfigurationChangedこれにより、何Activityを呼び出してもメソッドがトリガーされます。メソッドをオーバーライドすると、新しい値を渡すことができます。

お役に立てれば。

于 2013-03-15T13:05:18.427 に答える