gpt4 book ai didi

android - fragment 变为可见时的监听器

转载 作者:行者123 更新时间:2023-11-29 14:15:37 31 4
gpt4 key购买 nike

我快要发疯了,试图让 optionsMenu 为不同的 View 提供不同的选项。如果在我的 fragment 上调用了 onResume(),我可以让它工作,但事实并非如此。

我有一个 SherlockFragmentActivity,它在 onCreate 期间添加了一个像这样的 SherlockFragment:

if (getSupportFragmentManager().findFragmentById(android.R.id.content) == null) {
Fragment f = LoginFragment.newInstance();

getSupportFragmentManager()
.beginTransaction()
.add(android.R.id.content, f, "loginfragment")
.attach(f)
.commit();
}

这最终会使用相同的方法在它上面添加另一个 SherlockFragment:

Fragment f = OfferListFragment.newInstance();
getActivity().getSupportFragmentManager()
.beginTransaction()
.add(android.R.id.content, f, "offerList")
.addToBackStack(f.getClass().getSimpleName())
.commit();

最后,这会使用以下方法在顶部启动另一个 SherlockFragment:

AddOfferFragment newFragment = AddOfferFragment.newInstance(offer);

getActivity()
.getSupportFragmentManager()
.beginTransaction()
.add(android.R.id.content, newFragment, "addofferdialog")
.addToBackStack(newFragment.getClass().getSimpleName())
.commit();

我已经像这样添加了 onResume() 事件:

@Override
public void onResume() {
Log.e(TAG, "onResume");
super.onResume();
}

现在我在创建时看到 onResume 日志,但是当我从其中任何一个按返回时,我根本没有得到onResume` 日志。我的选项之一是注销,这样会消除所有 View :

FragmentManager fm = getSupportFragmentManager();

if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack(fm.getBackStackEntryAt(0).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
}

但我什至没有在第一个 fragment 上使用 onResume。

由于另一个问题,我的 fragment 是透明的 here (这可能是正常行为,我不确定)。我想知道我添加 fragment 的方式是否有误?

如果不是,还有什么问题?

最佳答案

正如 JonasSeputis 和 OP 本人所指出的,解决方案是将 transaction.add() 更改为 transaction.replace()

The detailed solution is here.

关于android - fragment 变为可见时的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16594352/

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