2011-01-06 2 views
1

検索可能な辞書v2に基づいて検索ウィジェットを作成しました。すべて正常に動作していますが、問題が1つあります。画面を回転させるときにアンドロイド検索ダイアログを表示する方法は?

検索ダイアログボックスがオンのときに、画面を縦向きから横向きにまたはその逆に回転させると、テキストエディットボックスとキーボード画面が消えて再び実行されます。

ダイアログボックスを終了して再実行せずに編集ボックスを適切なモード(横向きまたは縦向き)に切り替える方法はありますか?

検索可能な辞書で動作を確認できます。 私はGoogle検索ウィジェットのようなものが欲しいです。それは単に画面を維持しながら編集ボックスモードを切り替えるだけです。

答えて

5

画面の向きが変更されると、Androidは新しいアクティビティ/ビューを作成するので、自分で画面の向きを処理する必要があります。私はこのソリューションをアプリでうまく使いましたが、ウィジェットにも当てはまると思います。
http://www.androidpeople.com/android-how-to-handle-screen-orientation-change-issue/

他のいくつかの有用なヒント(基本的に同じソリューションは)ここにある:

はそれを行う方法については、このページを参照してください
How do I handle screen orientation changes with an activity started within a tab's activity
How to handle screen orientation change when progress dialog and background thread active?

onPauseに関するいくつかの情報()とonSaveInstanceState()(ウィジェットを使用しているときには当てはまりませんが、場合によっては適用されません):
How do I disable orientation change on Android?

+0

URLはもはや機能します。あなたはその解決策を記述できますか?私は、検索プロセスを再現し、ツールバーの検索アクションを拡張し、ユーザーの検索テキストを入力します。これは私が検索を完了するまで機能します。その時点で、ツールバーのアイコンは消えます。ナビゲーションアイコンとオーバーフロー(3つのドット)アイコンは残っていますが、そこに検索アイコン(およびアップロードアイコン)はありませんでした。それらは別の画面回転で復元されます –

2

ダイアログが表示された状態で終了したときにどのような私がやったことの向きをロックするために、それをアンロックしませんでした:

int currentOrientation = getResources().getConfiguration().orientation; 
     if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); //locks landscape 
     } 
     else { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); //locks port 
     } 
    // do work 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);