0

我在開發具有片段的平板電腦和智能手機的應用程序時遇到問題。onOptionsItemSelected在ViewPager中片段不被調用

當在智能手機上執行應用程序時,我會顯示帶有列表(類別)的片段。當點擊一個項目時,我開始一個新的活動,其中包含一個ViewPager,用另一個列表(細節)來擴展Fragments。

當應用程序在平板電腦上執行時,我有一個內部有兩個碎片的佈局。左邊是類別列表,右邊是詳細列表。

到這裏沒有問題,但是當設置onOptionsItemSelected時我​​有問題。

在智能手機上執行應用程序時,一切正常。此工作原理:含有ViewPager

活動

@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.icShare: sharePortal(); break; default: break; } return super.onOptionsItemSelected(item); } 

片段通過ViewPager

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.icFavourite: 
      Utils.setFavouritePortal(mContext, mPortal); 
      getActivity().invalidateOptionsMenu(); 
      return true; 
     case R.id.icShowFavourites: 
      showFavouriteArticles(); 
      return true; 
     default: 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

膨脹但執行在片劑中的應用程序時,onOptionsItemSelected不被調用。這是代碼:含有ViewPager

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.icShowFavourites: 
      Log.e("asdf", "asdfasdf - test tablet"); 
      break; 
     default: 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

片段片段通過ViewPager

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.icFavourite: 
      Utils.setFavouritePortal(mContext, mPortal); 
      getActivity().invalidateOptionsMenu(); 
      return true; 
     case R.id.icShowFavourites: 
      showFavouriteArticles(); 
      return true; 
     default: 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

唯一的區別是,在智能手機上執行時,所述第一onOptionsItemSelected是通過保持充氣一個Activity和Tabled中都有一個片段。我也嘗試從包含包含ViewPager的片段的Activity中執行onOptionsItemSelected,這些片段沒有運氣就會膨脹其他片段。

我該如何得到它的工作?

預先感謝您!

回答

0

該片段應調用setHasOptionsMenu(true),並應執行onCreateOptionsMenu()onOptionsItemSelected()

+0

我忘了說,我有黑幕實施setHasMenuOptions,但我會盡力實現onCreateOptionsMenu。 – 2014-09-11 16:11:57

1

嘗試將setHasOptionsMenu(true);放入要調用onOptionsItemSelected()的片段中。

Documentation

+0

我忘了說我陰影已經實現了setHasMenuOptions。 – 2014-09-11 16:12:34

相關問題