我有这个简单的代码:Android Honeycomb:如何确定FragmentTrancaction.commit()何时完成?
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//...
NetworkWorker networkFragment = NetworkWorker.createInstance(null);
fragmentTransaction.add(networkFragment, NETWORK);
//...
fragmentTransaction.commit();
networkFragment.startURLRequest("test");
}
坠毁,当我在我的startURLRequest()
程序调用getActivity()
。
一旦我将startURLRequest()
电话转到onStart()
,它就可以正常工作。
所以我用Google搜索了一下,发现这样的:
调用commit()并不立即执行交易。相反,只要线程能够这样做,它就会安排它在活动的UI线程(“主”线程)上运行。但是,如果有必要,您可以从UI线程调用executePendingTransactions()以立即执行commit()提交的事务。除非事务是其他线程中的作业的依赖关系,否则通常不需要这样做。 [AndDev guide]
现在,我的问题是...是不是真的建议使用此executePendingTransactions()
还是将举办一些陷阱?是否有另一种方法来确定交易是否完成?只是猜测他们可能会在活动的下一个例程中完成似乎并不令人满意。
亲切的问候, 水母
谢谢,我不知道“onAttach”。 :) – jellyfish 2011-06-08 12:45:45