2014-10-01 45 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" />