【Android】嵌套Fragment無法接收onCreateOptionsMenu事件的問題



前言

嵌套的二級Fragment無法接收onCreateOptionsMenu事件的問題,設置了setHasOptionsMenu也不管用

 

聲明
  歡迎轉載,但請保留文章原始出處:)
    博客園:http://www.cnblogs.com

    農民伯伯: http://www.cnblogs.com/over140/ 

 

正文

補充說明:

如果通過緩存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。

 

相關文章:

【Andorid X 項目筆記】嵌套Fragment的使用(5) 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM