Android 解決嵌套Fragment無法接收onCreateOptionsMenu事件的問題
更新時間:2016年07月23日 11:34:53 投稿:lqh
本文主要介紹Android Fragment無法接收onCreateOptionsMenu事件的問題,這里給出解決辦法以及詳細代碼,希望能幫助有需要的小伙伴
前言
嵌套的二級Fragment無法接收onCreateOptionsMenu事件的問題,設置了setHasOptionsMenu也不管用。
正文
補充說明:
如果通過緩存Fragment手動調用二級Fragment,可能會出現莫名其妙的問題,比如更多Menu不顯示。
解決辦法:
在一級Fragment中添加Menu,可以在一級onOptionsItemSelected中手動調用二級的此方法來處理相關事件。
示例代碼:
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { switch (getSelectedPosition()) { case 1: inflater.inflate(R.menu.menu1, menu); break; case 2: inflater.inflate(R.menu.menu2, menu); break; case 0: default: inflater.inflate(R.menu.menu3, menu); break; } } @Override public boolean onOptionsItemSelected(MenuItem item) { Fragment fragment = getFragmentByPosition(getSelectedPosition()); if (fragment != null) fragment.onOptionsItemSelected(item); return super.onOptionsItemSelected(item); }
代碼說明:
示例代碼是一級Fragment,getFragmentByPosition返回的是二級Fragment。
以上就是Android 解決 Fragment無法接收onCreateOptionsMenu事件的問題,希望能幫助Android開發(fā)的朋友解決類似問題。