天天看點

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

補充說明:

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

        case 0:

        default:

            inflater.inflate(R.menu.menu3, menu);

        }

    }

    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        Fragment fragment = getFragmentByPosition(getSelectedPosition());

        if (fragment != null)

            fragment.onOptionsItemSelected(item);

        return super.onOptionsItemSelected(item);

代碼說明:

示例代碼是一級Fragment,getFragmentByPosition傳回的是二級Fragment。

繼續閱讀