4.2.1 を実行している Galaxy Nexus を使用していますが、問題なく使用できます。oonSearchRequested
考慮すべき点がいくつかあります。
1 - 検索可能なアクティビティが実際に検索可能であることをマニフェストで宣言していることを確認し、onSearchRequested をキャッチするための検索インテント フィルターを追加していることを確認してください。
<activity
android:name="com.lazybits.rae.movil.Results"
android:label="@string/title_activity_results"
android:launchMode="singleTask"
android:parentActivityName="com.lazybits.rae.movil.Home" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
2 - オーバーライドonKeyDown()
して、適切な検索インターフェイスを作成します。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_SEARCH) && isOkToSearchWithinTheApp) {
onSearchRequested();
return true;
}
return super.onKeyDown(keyCode, event);
}
この時点で、searchWidget がある場合は自動的に読み込まれ、ユーザーの入力を待っているだけです。onNewIntent
searchable.xml の動作に応じて、Action.Search または Action.View を介して検索を処理するためにオーバーライドする必要があります。
編集
OK、私にお願いして、onKeyDown をオーバーライドしてみてください。ただし、次のようにコードを入れないでください。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SEARCH) {
//do nothing, simply return true to avoid regular behavious
return true;
}
}
私がテストしたいのは、それが Google の登場を止めるかどうかを確認することです。これはまったく何もしないはずです。それが機能する場合は、後でコードを追加できます。(イベントのさらなる伝播を避けるために) true を返し、onSearchRequested を呼び出さないことを確認してください。