2013-04-02 74 views
0

IAM初學編程的Android ... IAM使用下面的代碼片段移除代碼屏幕方向不工作後

   Fragment f=new Jobcat(); 
    FragmentManager fm=getSupportFragmentManager(); 
    FragmentTransaction ft =fm.beginTransaction(); 
    ft.add(R.id.jobcategoryfragment, f,"A"); 
    ft.commit(); 
       ft.add(R.id.jobcategoryfragment, f,"C"); 
    ft.commit(); 
    ft.add(R.id.jobcategoryfragment, f,"B"); 
    ft.commit(); 

和IAM使用下面的代碼移除片段添加片段引入到佈局..

Fragment f = getSupportFragmentManager().findFragmentByTag("B"); 
    FragmentTransaction ft=getSupportFragmentManager().beginTransaction(); 
    ft.remove(f); 
    ft.commit(); 

它的工作好,如果屏幕顯示方向不改變...如果我改變屏幕的方向,甚至如果我回來是IAM獲得運行時錯誤後定向原單狀態

04-02 17:02:23.051:W/dalvikvm(8937):線程ID = 1:螺紋與未捕獲的異常(組= 0x41082930)離開 04-02 17:02:23.051:E/AndroidRuntime(8937 ):FATAL EXCEPTION:main 04-02 17:02:23.051:E/AndroidRuntime(8937):java.lang.NullPointerException 04-02 17:02:23.051:E/AndroidRuntime(8937):at android.support。 E/AndroidRuntime(8937):在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 04-02 17:02:23.051:E/AndroidRuntime(8937):at android.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:429) 04-02 17:02:23.051:E/AndroidRuntime (8937):在andr oid.os.Handler.handleCallback(Handler.java:725) 04-02 17:02:23.051:E/AndroidRuntime(8937):at android.os.Handler.dispatchMessage(Handler.java:92) 04-02 17:02:23.051:E/AndroidRuntime(8937):在android.os.Looper.loop(Looper.java:137) 04-02 17:02:23.051:E/AndroidRuntime(8937):在android.app。 ActivityThread.main(ActivityThread.java:5041) 04-02 17:02:23.051:E/AndroidRuntime(8937):at java.lang.reflect.Method.invokeNative(Native Method) 04-02 17:02:23.051 :E/AndroidRuntime(8937):在java.lang.reflect.Method.invoke(Method.java:511) 04-02 17:02:23.051:E/AndroidRuntime(8937):at com.android.internal.os .ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) 04-02 17:02:23.051:E/AndroidRuntime(8937):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 04-02 17:02:23.051:E/AndroidRuntime(8937):在dalvik.system.NativeStart.main(本機方法)

誰能幫我找到一個解決這個問題...

謝謝

+0

請粘貼錯誤日誌以及 –

+0

請發佈整個logcat – thepoosh

+1

在您的活動中嘗試android:configChanges =「」,在其中添加片段 – Unknown

回答

-1

請在描述當前活動的AndroidManifest.xml中添加

android:configChanges="orientation|keyboardHidden|screenSize" 

...

0

發生NullPointerException是因爲在配置更改後可能不再將片段添加到活動中。如果在配置更改期間未保留碎片,則會發生這種情況。

你有兩個選擇:

  1. 在你Jobcat片段添加setRetained(真);到你的onCreate()方法。有了這個,你的片段就會在方向變化中存活下來,並被用與以前相同的TAG讀取到你的活動中。這不建議與具有GUI的片段一起處理以避免泄漏,但有時我發現沒有其他方便的方法來實現此目的。

  2. 檢查

    片f = getSupportFragmentManager()findFragmentByTag( 「B」) - >空

如果因此沒有必要從活動中刪除片段,因爲它不是無論如何,那裏再也沒有了。