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事件的问题 的全部内容, 来源链接: utcz.com/z/325410.html

回到顶部