2016-10-06 24 views
0

私はいくつかの他の同じ質問を見ていて、それらの解決策は私のために働いていなかったので、重複としてマークしてください。Androidの検索ビューで検索のアクティビティが呼び出されない

category_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/category.search" 
     android:title="Search" 
     app:showAsAction="ifRoom|collapseActionView" 
     app:actionViewClass="android.support.v7.widget.SearchView"/> 
</menu> 

Mainfest.xml

<activity android:name=".CategoryActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
       <meta-data android:name="android.app.default_searchable" android:value=".SearchResultsActivity" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".SearchResultsActivity" 
      android:label="@string/title_activity_search_results" 
      android:theme="@style/AppTheme.NoActionBar" 
      android:launchMode="singleTop"> 
      <intent-filter> 
       <action android:name="android.intent.action.SEARCH" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
      <meta-data    android:name="android.app.searchable"    android:resource="@xml/searchable" /> 
      <meta-data    android:name="android.support.PARENT_ACTIVITY"    android:value=".CategoryActivity" /> 
     </activity> 

CategoryActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.category_menu, menu); 
     SearchView searchView = (SearchView) menu.findItem(R.id.category_search).getActionView(); 
     SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultsActivity.class))); 
     return true; 
} 

SearchResultsActivity.java

01 RES/xmlの下
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d(TAG,"Search Began"); 
    setContentView(R.layout.search_results_activity); 
    handleIntent(getIntent()); 
} 

@Override 
protected void onNewIntent(Intent intent) { 
    handleIntent(intent); 
} 

private void handleIntent(Intent intent) { 
    Log.d(TAG, "Herer"); 
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
     String query = intent.getStringExtra(SearchManager.QUERY); 
     //use the query to search your data somehow 
     Log.d(TAG, query); 
    } 
} 

Searchable.xml/

<?xml version="1.0" encoding="utf-8"?> 

<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="@string/app_name" 
    android:hint="Recipe Search" /> 

答えて

1

あなたはsearchViewでonQueryTextListenerを追加する必要があります。 searchable.xmlandroid:labelが含まれていない場合

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.category_menu, menu); 
     SearchView searchView = (SearchView) menu.findItem(R.id.category_search).getActionView(); 
     SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
     searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultsActivity.class))); 
     searchView..setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       startActivity(CategoryActivity.this, SearchResultActivity.class); 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       return false; 
      } 
     }); 
     return true; 
} 
+0

startActivity(CategoryActivity.this、SearchResultActivity.class)。これはエラー – dharmesh

+0

を投げている@dharmeshエラーログ(logcat)を投稿してください – hakim

0

、それはあなたがsearchable.xmlにこのコードを追加してください、SearchResultActivityを開始しません:

<?xml version="1.0" encoding="utf-8"?> 
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
android:label="@string/app_name" ===================> can not contain empty strings 
android:hint="Recipe Search" /> 
関連する問題