私は実際にAndroidの組み込みの検索インターフェースを使用しようとしていますが、検索クエリでデータを渡そうとするといくつかの問題が発生します。
簡単な説明は次のとおりです。Serializableを実装する「Category」という最初のアクティビティ(FirstActivity)にオブジェクトがあり(すでにアクティビティ間で正常に渡されています)、そのカテゴリに関連する検索を実行して、結果をに表示したいと思います。 2番目のアクティビティ(SecondActivity)。
したがって、FirstActivityでは、onSearchRequestメソッドをオーバーライドします。
@Override
public boolean onSearchRequested() {
Bundle appData = new Bundle();
appData.putSerializable("category", _currentCategory);
Log.d(Utils.LOG_TAG, "Bundle : "+appData.keySet());
startSearch(null, false, appData, false);
return true;
}
そしてSecondActivityで、私はこのバンドルを取得しようとします:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
handleIntent(getIntent());
}
private void handleIntent(Intent intent){
Bundle appData = intent.getBundleExtra(SearchManager.APP_DATA);
if(appData == null) Log.d(Utils.LOG_TAG, "appData == null");
Log.d(Utils.LOG_TAG, "Extras : "+intent.getExtras().keySet());
}
問題は、appDataが毎回nullに等しいように見えることです。logcatの出力は次のとおりです。
Bundle : [category]
appData == null
Extras : [query, user_query]
他のオブジェクト(ブール値など)をバンドルに追加しようとしましたが、何も変更されず、appDataがnullのままになります。