【问题标题】:Android onSearchRequested() help, passing search query back to map activityAndroid onSearchRequested() 帮助,将搜索查询传递回地图活动
【发布时间】: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


    【解决方案1】:

    您可以将来自 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

    【讨论】:

    • 我对 SharedPreferences 很熟悉,只是完全不知道如何将搜索查询结果放入数据变量中
    • 添加了您要查找的内容!
    • 所以我能够将数据返回到主要活动,但是如何使用此字符串查询更新我的地图视图? stackoverflow.com/questions/8100261/…
    猜你喜欢
    • 2011-07-02
    • 2017-08-25
    • 2011-06-16
    • 2017-04-19
    • 1970-01-01
    • 2014-05-03
    • 2011-06-15
    • 1970-01-01
    • 2011-02-02
    相关资源
    最近更新 更多