我有一個FragmentActivity在啓動時加載一個自定義ListFragment,並在單擊項目後用新片段替換它。片段addToBackStack崩潰應用
在片段活動的子類:
public void onCreate(Bundle savedInstanceState) {
...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.list_activity, listFragment, "venueListFragment");
ft.commit();
...
}
在ListFragment子類中的列表項的處理程序:
public void onListItemClick(ListView l, View v, int position, long id) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
VenueListFragment newFragment = VenueListFragment.newInstance(nextListType, nextRowID);
ft.replace(R.id.list_activity, newFragment, "venueListFragment");
ft.addToBackStack(null);
ft.commit();
}
這第一片段後工作正常,但是當我試着點擊了項目在第二個片段中,我從內部FragmentManager類中得到此錯誤:
04-03 01:04:24.999: E/AndroidRuntime(15016): FATAL EXCEPTION: main
04-03 01:04:24.999: E/AndroidRuntime(15016): java.lang.NullPointerException
04-03 01:04:24.999: E/AndroidRuntime(15016): at android.support.v4.app.LoaderManagerImpl.hasRunningLoaders(LoaderManager.java:824)
04-03 01:04:24.999: E/AndroidRuntime(15016): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1082)
04-03 01:04:24.999: E/AndroidRuntime(15016): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622)
04-03 01:04:24.999: E/AndroidRuntime(15016): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416)
04-03 01:04:24.999: E/AndroidRuntime(15016): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420)
04-03 01:04:24.999: E/AndroidRuntime(15016): at android.os.Handler.handleCallback(Handler.java:587)
我注意到,如果我註釋掉addToBackStack,下一個片段加載正常,但是因此我無法再向後導航。另外,如果我在點擊下一個列表項前簡單等待5-7秒,應用程序不會崩潰,但片段中的光標加載器會以比此更早的加載方式完成加載,因爲整個列表已經可見。在onDestroyView中,我總是明確調用CursorLoader的cancelLoad()方法。
有關如何解決這個問題的任何想法?這是Android兼容庫中的一個錯誤嗎?
我正在使用最新版本的ACL(第7版)並將min SDK設置爲API級別7(2.1)。
你是一個救星! – oohaba 2012-04-03 04:32:17