gpt4 book ai didi

android - onCreateOptionsMenu() 在 Fragment 中调用了两次

转载 作者:行者123 更新时间:2023-12-04 02:07:50 31 4
gpt4 key购买 nike

我有一个带有选项菜单的简单应用程序,它在 fragment 开始时发生变化。
问题是,在开始时,除了第一个 onCreateOptionsMenu() 之外的任何 fragment 都被调用了两次 - 在 onCreate() 内和 onResume() 之后。
在 onCreate() 中,我通过 setHasOptionsMenu(true) 手动调用它,但在 onResume() 之后它不应该发生。
此外,这只发生在第一个 fragment 开始之后。

这是基本 fragment 代码:

class BaseFragment extends Fragment {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle clicks
return true;
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Create a menu
super.onCreateOptionsMenu(menu, inflater);
}
}

以及Activity中不断变化的 fragment 代码:
public void startFragment(BaseFragment fragment) {
getSupportFragmentManager()
.beginTransaction()
.replace(android.R.id.content, fragment)
.commit();
}

该示例不使用任何外部库,如 ActionBarSherlock,仅使用 SupportLibrary。
我想,问题出在 FragmentTransaction replace() 方法中,因为它在第一个 fragment 开始时工作正常。但我不知道,从哪里开始解决问题。我需要完全替换 View 中的 fragment 。

最佳答案

我知道我迟到了,但遇到了同样的问题——我的解决方案实际上是明确添加

setHasOptionsMenu(false);

到我的 SupportFragments onCreate 函数。这可以防止对 Activity 的 onCreateOptionsMenu 和 onPrepareOptionsMenu 的任何额外调用。希望这可以帮助。

关于android - onCreateOptionsMenu() 在 Fragment 中调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16506044/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com