2017-10-09 33 views
0

我創建了一個默認的Android頁面,其中有3個選項卡和片段管理器,我已經添加了2個更多的片段到目前爲止,一切都工作正常,直到我嘗試發送接口到主要活動,並通過捆綁和交易從那裏發送數據到第三個片段:片段接口和事務替換

這樣的:

public void setF4Riddle(int x){ 
    Frag4 F4 = 
(Frag4)getSupportFragmentManager().findFragmentById(R.id.frag4); 


    if (F4 != null) { 
     F4.getF4Riddle(x); 

    } else { 
     Frag4 fragment = new Frag4(); 
     Bundle args = new Bundle(); 
     args.putInt("Value", x); 
     TextView Dialog =(TextView)findViewById(R.id.Dialog); 
     Dialog.setText(""); 
     fragment.setArguments(args); 
     getSupportFragmentManager().beginTransaction() 
       .replace(R.id.frag4_container, fragment) 
       .addToBackStack(null).commit(); 
     fragment.getF4Riddle(x); 
    } 


} 

,它正常工作與片段4(其從片段5比4),但是當我嘗試片段3崩潰的同一件事(崩潰發生在事務替換中,它不替代frag3佈局)事實上,我嘗試過片段2和在所有情況下,遊戲崩潰(1,2,3),但當我添加更多的片段(6和7),它再次起作用,所以它似乎只有前3個不工作有人知道原因嗎?謝謝

堆棧跟蹤:

10-09 00:01:46.985 20690-20690/com.redot.puzzle3 E/AndroidRuntime: FATAL EXCEPTION: main 
                   Process: com.redot.puzzle3, PID: 20690 
                   java.lang.IllegalArgumentException: No view found for id 0x7f0d0098 (com.redot.puzzle3:id/frag3) for fragment Frag3{128ae004 #5 id=0x7f0d0098} 
                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1326) 
                    at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574) 
                    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641) 
                    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794) 
                    at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415) 
                    at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200) 
                    at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153) 
                    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063) 
                    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:725) 
                    at android.os.Handler.handleCallback(Handler.java:739) 
                    at android.os.Handler.dispatchMessage(Handler.java:95) 
                    at android.os.Looper.loop(Looper.java:145) 
                    at android.app.ActivityThread.main(ActivityThread.java:6873) 
                    at java.lang.reflect.Method.invoke(Native Method) 
                    at java.lang.reflect.Method.invoke(Method.java:372) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
+0

發表您的堆棧跟蹤 – Sony

+0

遺憾的是菜鳥,但我通過運行在logcat中調試應用程序獲取堆棧跟蹤? – amirsoltani

+0

@索尼伊夫做了它 – amirsoltani

回答

0

嗯,我認爲當你與fragmentManager添加Frag3片段的問題可能是。當您嘗試添加片段的片段容器未出現在活動的視圖層次結構中時,可能會出現此錯誤。例如:

getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.fragmentContainer, frag3) 
    .commit(); 

確保「R.id.fragmentContainer」是的FrameLayout你指向正確的,它存在於你當前活動的佈局。因爲你可能會調用不同的佈局片段容器,這可能會導致:

IllegalArgumentException: No view found for id 0x7f0b0061 ... for fragment ... ... 
+0

我應該如何確保contairner目前在活動的佈局 – amirsoltani

+0

我試圖添加''到它沒有工作的活動 – amirsoltani

+0

是活動的佈局中的片段容器id(FragmeLayout),相同作爲您在替換方法中設置的ID?可能錯誤是因爲它無法找到您所指的ID。 – CamiloCons