我有這個簡單的代碼: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