我在一个相当复杂的布局中有一个Map活动。因此,我不能简单地在该活动中使用地图的搜索功能进行简单搜索而不会造成错误的窗口(并且崩溃应用程序,我需要onSearchRequested使用不同的上下文,但它不接受参数。)
我所做的是在地图活动上方另一个透明的弹出式活动,在onSearchRequested()
期间立即调用onCreate()
我正在考虑做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弹出活动不会进行实际搜索,而我对地图的活动将对该位置数据进行所有实际处理,我是否应该以某种方式更改清单?
答案 0 :(得分:2)
您可以将结果从startActivityForResult
存储在Android SharedPreferences对象中。 SharedPreferences非常棒,可以从应用程序的任何地方获得,甚至可以从全局获取。如果你没有,那么有一个类来存储SharedPreferences的常量是个好主意。
SharedPreferences的文档很棒。这是链接:
http://developer.android.com/reference/android/content/SharedPreferences.html
希望这有帮助!
至于从结果中获取数据,您需要使用名为onActivityResult
的方法。然后使用适当的请求代码。
上述方法的文档可以在这里找到:
http://developer.android.com/reference/android/app/Activity.html