我在開發具有片段的平板電腦和智能手機的應用程序時遇到問題。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,這些片段沒有運氣就會膨脹其他片段。
我該如何得到它的工作?
預先感謝您!
我忘了說,我有黑幕實施setHasMenuOptions,但我會盡力實現onCreateOptionsMenu。 – 2014-09-11 16:11:57