2014-11-05 156 views
1

調用invalidateOptionsMenu()內片段這裏是我的代碼,首先:使用程序兼容性

@Override 
    public void onPrepareOptionsMenu(Menu menu) { 
     super.onPrepareOptionsMenu(menu); 

     try { 
      menu.findItem(R.id.action_user_search).setVisible(true); 
      menu.findItem(R.id.action_view_spots).setVisible(false); 
      getActivity().invalidateOptionsMenu(); 

     } catch (Exception e) { 
      // do nothing; always null when looking at other people's profile 
     } 

    } 

這發生在一個片段中。我在本文中使用最新的AppCompat主題。如果您使用AppCompatsupportInvalidateOptionsMenu();,但我聽說有另一種方法可以調用此方法,但這是無法識別的。

當我開始應用程序轉到此特定時,會發生什麼情況,FragmentSearchView圖標確實顯示,但不響應觸摸。上面的第二項不會隱藏,因爲假設。

我在做什麼錯?

編輯由REQUEST

這在ActionBarActivity只調用,而不是Fragment

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

     case android.R.id.home: 

      toggleSlidingMenu(); 

      return true; 


     case R.id.action_view_spots: 

      Intent mapLoc = new Intent(MainActivity.this, 
        MapLocationsActivity.class); 
      startActivity(mapLoc); 

      return true;  


     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

這裏是我的XML

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item 
     android:id="@+id/action_user_search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     android:icon="@android:drawable/ic_menu_search" 
     app:showAsAction="always" 
     android:title="Find User"/> 
    <item 
     android:id="@+id/action_view_spots" 
     android:icon="@android:drawable/ic_menu_mapmode" 
     app:showAsAction="ifRoom" 
     android:title="Map View"/>  

</menu> 
+0

'onOptionsItemSelected'的代碼是什麼? – 2014-11-05 18:30:39

+0

@PedroOliveira我不會在Fragment中調用它,但是'ActionBarActivity()' - 我會在 – KickingLettuce 2014-11-05 18:32:08

+0

之上加上它。'supportInvalidateOptionsMenu'如何被無法識別?它只能在'ActionBarActivity/FragmentActivity'上調用。你有沒有嘗試將你的'getActivity()'轉換爲其中的一個並調用它? – 2014-11-05 18:34:28

回答

0

我通過導入固定它直接來自蘇的ListFragment pport圖書館。這樣做允許supportInvalidateOptionsMenu被識別,然後一切運作良好。