2016-06-08 35 views
0

我只是嘗試這樣的代碼:無法解析法 「則findItem(INT)」

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
      return true; 
     case R.id.action_search: 
      MenuItemCompat.setOnActionExpandListener(item.findItem(R.id.action_search), 
        new MenuItemCompat.OnActionExpandListener() { 
       @Override 
       public boolean onMenuItemActionExpand(MenuItem item) { 
        System.out.println("expand"); 
        return true; 
       } 

       @Override 
       public boolean onMenuItemActionCollapse(MenuItem item) { 
        System.out.println("collapse"); 
        return true; 
       } 
      }); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

但它顯示了我一個錯誤,他說:

無法解析法 「則findItem(INT)」

我對android developer進行了檢查,該方法似乎對我使用它的方式有效。 有誰知道它爲什麼不起作用? 感謝

+0

'則findItem()'存在'Menu',而不是'MenuItem'。 – 323go

+0

你正試圖從'MenuItem'找到一個'MenuItem',這是沒有意義的 – tyczj

回答

4

文件說,它應該被稱爲菜單

item.findItem(R.id.action_search) // Here item is MenuItem not Menu 
0

嘗試這種方式

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
      return true; 
     case R.id.action_search: 
      MenuItemCompat.setOnActionExpandListener(item, 
        new MenuItemCompat.OnActionExpandListener() { 
       @Override 
       public boolean onMenuItemActionExpand(MenuItem item) { 
        System.out.println("expand"); 
        return true; 
       } 

       @Override 
       public boolean onMenuItemActionCollapse(MenuItem item) { 
        System.out.println("collapse"); 
        return true; 
       } 
      }); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
}