首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >executePendingTransactions不提交FragmentTransaction

executePendingTransactions不提交FragmentTransaction
EN

Stack Overflow用户
提问于 2014-04-11 08:21:59
回答 2查看 2.6K关注 0票数 0

我有一些简单的代码,其中我用另一个片段替换了一个片段。我所看到的问题是,新的片段从来没有调用过它的任何创建、/attach等生命周期。

代码如下:

代码语言:javascript
复制
String SERVER="SERVER";
android.support.v4.app.FragmentManager fm = getChildFragmentManager();      
FragmentTransaction ft = fm.beginTransaction().setCustomAnimations(R.anim.pop_enter, R.anim.pop_exit );


Fragment s = fm.findFragmentByTag(SERVER);
if(s == null ) s = new ServerFragment();

ft.replace(R.id.fragment_container, s, SERVER);
ft.show(s); 
ft.commit();
boolean result = fm.executePendingTransactions();
//Validate if added
Fragment frag = fm.findFragmentByTag(SERVER);
frag.isAdded(); //Returns FALSE!

我希望isAdded方法返回True,而且关键的是,我还希望调用常用的片段生命周期方法。然而,情况并非如此。

有什么想法会非常感谢吗?

问候

EN

回答 2

Stack Overflow用户

发布于 2014-04-11 08:32:13

这里不是肯定的,但似乎因为您每次都创建一个新的片段,而不是显式地销毁旧的ServerFragments,所以findFragmentByTag很可能会找到创建的第一个片段,这不会为isAdded()返回true,因为它已经从视图层次结构中删除了。

如果这是正确的,那么您应该看到isAdded()调用在第一次调用该方法时返回true,之后就不会再返回true了

票数 0
EN

Stack Overflow用户

发布于 2014-04-11 09:27:55

我相信有一个函数可以执行挂起的事务,里面有immediate这个词。它使事务立即发生,而不是在程序到达它时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23001412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档