我成功地使用操作栏中的搜索小部件来执行以下搜索本指南 http://developer.android.com/guide/topics/search/search-dialog.html。搜索很好,但我想知道如何在搜索中传递其他变量。同一个指南指出我可以覆盖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
总是null
.
Note
onSearchRequested()
is已致电,但捆绑包未到达我的手中onCreate()
method.
来自传递意图的所有额外内容都是{user_query=my-query, query=my-query}
.
似乎执行此操作的唯一方法是拦截在启用搜索的活动中创建的新活动。为此,我们重写startActivity()
方法。然后我们可以检查以确保该活动确实是搜索活动,然后向意图添加额外的内容。工作代码如下。
@Override
public void startActivity(Intent intent) {
// check if search intent
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
intent.putExtra("KEY", "VALUE");
}
super.startActivity(intent);
}
然后,您可以像在搜索活动中获取任何其他额外内容一样获取额外内容,方法是:
mValue = intent.getStringExtra("KEY");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)