我实际上是在尝试使用 Android 的内置搜索界面,但是当我尝试使用搜索查询传递数据时遇到了一些问题。
这是一个简短的解释:我在第一个活动(FirstActivity)中有一个名为“Category”的对象,它实现了可序列化(我已经在活动之间成功传递了它),我想执行与该类别相关的搜索,并将结果显示在第二个活动(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 中,我尝试获取此 Bundle :
@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]
我试图将一些其他对象添加到 Bundle(布尔值等)中,但它根本没有改变任何东西,而且我一直有一个空的 appData。