0

私の主なアクティビティは、検索を呼び出して検索結果を表示する必要があります。onSearchRequested() が呼び出されたとき、検索ダイアログは表示されません。

同様の質問を見つけて、すべての詳細を追跡しました(と思います)が、どうやら他に何か問題があるようです。これが私の実装の抜粋です。

AndroidManifest.xml の一部

<application
    android:label="@string/AppName"     
    android:launchMode="singleTop"
    ... >

    <meta-data 
      android:name="android.app.default_searchable"
      android:value=".main.MainActivity" />

    <activity
      android:name=".main.MainActivity"
      android:launchMode="singleTop" 
      ... >

      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

      <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
      </intent-filter>

      <meta-data
        android:name="android.app.searchable"
        android:resource="@xml/deep_search" />

    </activity>
    ...
</application>

deep_search.xml

<?xml version="1.0" encoding="utf-8"?>
<Searchable
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:label="@string/AppName"
  android:hint="@string/search_deep_hint" >
</Searchable>

MainActivity のパーツ:

public class MainActivity extends Activity implements ...
{
  @Override
  protected void onNewIntent (Intent intent)
  {
    setIntent(intent);
    if (Intent.ACTION_SEARCH.equals(intent.getAction()))
    {
      String query = intent.getStringExtra (SearchManager.QUERY);
      // Do work using string
    }
  }

  @Override
  public boolean onOptionsItemSelected (MenuItem item) 
  { 
    int selectedId = item.getItemId();
    switch (selectedId)
    { 
      case ...:

      case R.id.menu_search_deep:
          boolean launched = onSearchRequested();
          logI ("home page deep searched launched: " + launched); // log shows we got here
        }
        return true; 
    }

  ...
}
4

0 に答える 0