【发布时间】:2011-12-26 09:53:26
【问题描述】:
我有一个布局相当复杂的地图活动。因此,我无法在该活动中使用地图的搜索功能进行简单搜索,而不会创建一个错误的窗口(并且应用程序崩溃,我需要 onSearchRequested 使用不同的上下文,但它不接受参数。)
我所做的是在地图活动上方创建另一个透明弹出活动,该活动在onCreate() 期间立即调用onSearchRequested()
问题是,当我输入内容并单击搜索时,什么也没有发生。搜索栏会自行清除,但会停留在屏幕上,好像在提示我再次搜索某些内容。我不知道这个搜索查询会发生什么,但我需要将它传递给我的 MapActivity。
我正在考虑执行startActivityforResult 并从搜索弹出活动中传回结果,但我仍然面临不知道如何存储结果并在单击搜索后让搜索消失的困境
这个类加载了一个搜索框,仅此而已。它还在搜索框和键盘之间的空间中有一个透明的图像视图。如果用户点击那里,则活动结束()
public class PseudoMapSearchActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pseudomapsearch);
onSearchRequested();
findViewById(R.id.blankness).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
final SearchManager searchManager =
(SearchManager) getSystemService(this.SEARCH_SERVICE);
searchManager.setOnCancelListener(new SearchManager.OnCancelListener() {
public void onCancel() {
searchManager.setOnCancelListener(null);
searchManager.stopSearch();
finish();
}
});
searchManager.setOnDismissListener(new SearchManager.OnDismissListener() {
public void onDismiss() {
searchManager.setOnCancelListener(null);
searchManager.stopSearch();
finish();
}
});
//searchManager.getSearchableInfo(getCallingActivity());
//searchManager.triggerSearch(query, launchActivity, appSearchData)
}
我应该调用什么searchManager 函数来让用户输入并从中选择搜索查询
<activity android:name=".PseudoMapSearchActivity" android:theme="@style/Theme.Transparent" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable"
android:value=".PseudoMapSearchActivity" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
由于 Pseudomapsearch 弹出活动不会进行实际搜索,而我的地图活动将对此位置数据进行所有实际处理,那么我是否应该以某种方式更改清单?
【问题讨论】:
标签: android search android-activity map