我在活動中顯示對話框片段,嘗試使用show()和add()方法。下面getSupportFragmentManager在兼容庫中失敗
HelpDialogFragment hdf = HelpDialogFragment.newInstance();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(hdf, "dialog");
ft.commit(); #crash here
的代碼給我弄IllegalStateException異常錯誤有時從上面的代碼,崩潰日誌如下
java.lang.IllegalStateException: Activity has been destroyed
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1329)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:548)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:532)
at com.delight.activities.HomeActivity.showHelp(HomeActivity.java:311)
行給出否定的。 HomeActivity.java中的311是ft.commit()
,在上面的代碼中提到。我的活動從兼容性庫(這是迄今爲止的更新)擴展FragmentActivity。如果我使用show()
方法,則會發生同樣的崩潰。
HelpDialogFragment hdf = HelpDialogFragment.newInstance();
hdf.show(getSupportFragmentManager(), "dialog"); #same crash here
所以我來給getSupportFragmentManager()
引起了我的問題的結論,我不明白的是,在什麼部分的代碼我使用的是已被破壞的活動,據我瞭解getSupportFragmentManager()
應該讓我返回目前活動的經理。
我需要一些幫助來解決這個問題。
你可以發佈你的活動代碼嗎? – biegleux 2012-07-22 08:36:26
只是一個盲注,你有沒有叫'super.onCreate(savedInstanceState);'作爲'Activity'的'onCreate()'中的第一個語句? – biegleux 2012-07-22 08:40:54
是的,我叫它。 – 2012-07-22 09:30:22