[英]onCreateOptionsMenu is not called after a fragment add & remove
我有一個片段,可以在其中調用ActivityCompat.invalidateOptionsMenu(getActivity());
並且在活動和片段上都成功調用了onCreateOptionsMenu()
方法。
但是,當我使用以下命令在片段頂部添加片段時:
transaction.add(R.id.fragment_home, fragment2, "fragment_ID");
transaction.addToBackStack(null);
transaction.commit();
然后關閉它(通過backPress或getSupportFragmentManager().popBackStack();
), ActivityCompat.invalidateOptionsMenu(getActivity());
變得反應遲鈍。 完全不調用onCreateOptionsMenu()
。
我肯定知道,如果我使用replace()
而不是add()
,它將起作用,但是,由於某些原因,我需要使用add()
。
活動中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_home);
if (fragment != null)
fragment.onCreateOptionsMenu(menu, getMenuInflater());
return true;
}
在片段1:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "onCreateOptionsMenu() called with: ...");
// additional code
super.onCreateOptionsMenu(menu, inflater);
}
請嘗試以下代碼:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_home);
if (fragment != null) {
fragment.onCreateOptionsMenu(menu, getMenuInflater());
return true;
}
getMenuInflater().inflate(R.menu.menu_layout, menu);
return super.onCreateOptionsMenu(menu);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.