アクション バーの検索ウィジェットを使用して、このガイドに従って検索を実行しています。検索は問題ありませんが、検索で追加の変数を渡す方法を知りたいです。同じガイドにはオーバーライドできると記載されていますonSearchRequested()
が、これは検索ウィジェットでは機能しないようです。
問題のオーバーライド:
@Override public boolean onSearchRequested() { Bundle appData = new Bundle(); appData.putString("KEY", "VALUE"); startSearch(null, false, appData, false); return true; }
アクティビティ クラスでバンドルを取得する:
protected void onCreate(Bundle savedInstanceState) { // ... Intent intent = getIntent(); Bundle appData = intent.getBundleExtra(SearchManager.APP_DATA); String value = appData.getString("KEY"); Log.d("VALUE", value); // ... }
appData
is always であるため、検索クラスの作成時にアプリケーションがクラッシュしますnull
。
ノート
onSearchRequested()
が呼び出されますが、バンドルがメソッドに到達しませんonCreate()
。
渡されたインテントからのすべてのエクストラは{user_query=my-query, query=my-query}
.