私は公式チュートリアルに基づいて検索ウィジェットインターフェイスを開発しています: http://developer.Android.com/guide/topics/search/search-dialog.html
問題:クエリを入力して[OK]/[Enter]を押しても、SearchableActivityがトリガーされません。
SearchableActivityのマニフェスト:
<activity Android:name="SearchableActivity" Android:launchMode="singleTop" >
<intent-filter>
<action Android:name="Android.intent.action.SEARCH" />
</intent-filter>
<meta-data
Android:name="Android.app.searchable"
Android:resource="@xml/searchable" />
</activity>
xml/searchable.xml
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:hint="Search" Android:label="@string/app_name" >
</searchable>
アクションバーにアイコンを追加するメインアクティビティライフサイクルメソッド(正常に動作します):
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
// Get the SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
// Do not iconify the widget;expand it by default
searchView.setIconifiedByDefault(false);
return true;
}
SearchableActivity.Java
public class SearchableActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("MY", "search activity triggered");
}
}
注:検索ウィジェットがアクションバーに表示され、データを挿入できますが、OK/Enterを押してもSearchableActivityに移動しません(しません) SearchableActivityのonCreateをトリガーしません)。
私は何かが足りないのですか、それとも公式チュートリアルに欠陥がありますか?
問題が解決しました:チュートリアルには重要な部分が1つ欠けているようです:検索ウィジェットを正しく機能させるには、マニフェストの<meta-data Android:name="Android.app.default_searchable" Android:value=".MySearchActivityName" />
タグ内に<application>
を追加する必要があります。
[〜#〜] edit [〜#〜]-データ投稿時にアクションバー検索がトリガーされない場合の問題を解決するためのヒント(エラーなし)与えられたものとドキュメントにはこの制限についての言葉がありません):searchable.xmlファイルでAndroid:hintおよびAndroid:label属性[〜#〜] must [〜#〜]strings.xml内の文字列への参照です。 ソース
アクティビティでは、onOptionsItemSelected
とおそらくonSearchRequested
をオーバーライドする必要があります。
「xml/searchable.xml」ファイルが正しくフォーマットされていない場合(「searchable」タグなどがすべて小文字ではない場合)、実行中にエラーメッセージは返されず、「SearchableActivity」は呼び出されません。