2014-10-01 46 views
1

好吧,我非常沮喪我一直試圖讓SearchView幾個小時工作,沒有運氣。我檢查瞭如何處理這個,我發現一個示例項目和示例項目效果很好。然後,我在我的項目中實施相同的確切事情,並且我搞砸了。意圖不會開火。我不明白爲什麼。我跟着 thisAndroid搜索Intent not Firing我在做什麼錯了?

我有我的所有活動在一個活動文件夾,但刪除了搜索和主要的一個,看看是否是這種情況......它不是。在我的搜索結果活動中,我正在處理這個意圖。它目前看起來像這樣。

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_search_result); 

     // get the action bar 
     ActionBar actionBar = getActionBar(); 

     // Enabling Back navigation on Action Bar icon 
     actionBar.setDisplayHomeAsUpEnabled(true); 

     txtQuery = (TextView) findViewById(R.id.txtQuery); 

     handleIntent(getIntent()); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.search_result, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

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

    /** 
    * Handling intent data 
    */ 
    private void handleIntent(Intent intent) { 
     if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 

      String query = intent.getStringExtra(SearchManager.QUERY); 

      txtQuery.setText("Search Query: " + query); 

     } 

    }  

我的可搜索XML看起來像這樣。

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

由於某種原因搜索提示沒有出現,但是字符串資源顯示出來並被聲明。

我的選項菜單看起來像這樣

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/search" 
     android:title="Search" 
     android:icon="@android:drawable/ic_search_category_default" 
     android:showAsAction="collapseActionView|ifRoom" 
     android:actionViewClass="android.widget.SearchView" /> 
    <item android:id="@+id/Menu" 
     android:title="MENU" 
     android:showAsAction="collapseActionView|ifRoom" 
     /> 

我的清單看起來是這樣的。

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/MyTheme" > 

     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      > 
      <meta-data 
       android:name="android.app.searchable" 
       android:resource="@xml/searchable" /> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".activities.MenuActivity" 
      android:label="@string/title_activity_menu" 
      android:theme="@style/IDME.Theme.Transparent" > 

     </activity> 
     <activity 
      android:name=".activities.CategoriesActivity" 
      android:label="@string/title_activity_categories" > 
     </activity> 

     <activity 
      android:name=".SearchResultActivity" 
      android:label="@string/title_activity_search_result" 
      > 
      <intent-filter> 
       <action android:name="android.intent.action.SEARCH" /> 
      </intent-filter> 

     </activity> 
    </application> 
    </menu> 

而我的搜索查看充氣器看起來像這樣。

@Override 
     public boolean onCreateOptionsMenu(Menu menu) 
     { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.options_menu, menu); 
      SearchManager searchManager = 
        (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
      SearchView searchView = 
        (SearchView) menu.findItem(R.id.search).getActionView(); 
      searchView.setSearchableInfo(
        searchManager.getSearchableInfo(getComponentName())); 

      return true; 
     } 

我不能爲我的生活弄清楚是怎麼回事,我跟着兩個支架的嘴臉,我看不出有什麼不對。我弄亂了元數據,我真的不能再看到問題了。我堅持

回答

0

您的元數據不正確,則必須使用:

<meta-data 
    android:name="android.app.searchable" 
    android:resource="@xml/searchable" 
    android:value="your package name of searchable activity.SearchResultActivity" />