2017-08-30 70 views
0

我正在做一個搜索欄,但我發現一個問題,因爲如果我把代碼放在MainActivity的末尾,它不會加載選項。我的應用程序不加載工具欄選項

public boolean onCreateOptionsMenu(Menu menu) { 
getMenuInflater().inflate(R.menu.main_menu, menu); 
    return super.onCreateOptionsMenu(menu); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ 

     SearchManager manager = (SearchManager) getSystemService (Context.SEARCH_SERVICE); 
     SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
     search.setSearchableInfo(manager.getSearchableInfo(getComponentName())); 
     search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String query) { 
       return false; 
      } 
     }); 
}} 

我該怎麼辦?我做錯什麼了嗎?

在此先感謝

+0

我不確定你的代碼在return語句後放了什麼後甚至編譯了。它不會給錯誤說無法訪問的聲明? –

回答

1

你的邏輯是在return語句之後,因此永遠不會到達。試試這個吧:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main_menu, menu); 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ 

     SearchManager manager = (SearchManager) getSystemService (Context.SEARCH_SERVICE); 
     SearchView search = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
     search.setSearchableInfo(manager.getSearchableInfo(getComponentName())); 
     search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       return false; 
      } 

      @Override 
      public boolean onQueryTextChange(String query) { 
       return false; 
      } 
     }); 
    } 
    return super.onCreateOptionsMenu(menu); 
} 
+0

工作,但...它不會過濾任何東西...... –

+1

因此,你必須做一些onQueryTextChange – Frank

+0

好吧,現在,這部分的代碼工作,如弗蘭克說,你要麼自己執行一些過濾在目前的兩個回調中,或者需要確保您的搜索界面正確配置(因爲您似乎依賴它來執行搜索),不幸的是,我沒有足夠的信息來說明您想通過此搜索實現的目標,瞭解您當前的搜索界面配置,以瞭解爲什麼它不會執行您需要的操作。 – cjurjiu

1
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ 

永遠不能到達,您return語句之前。其餘的看起來很好。

+0

謝謝,但現在searchManager給我錯誤「無法訪問的聲明」。我該怎麼辦?感謝 –

相關問題