2017-10-09 5 views
0

Ich habe eine Standard - Android - Seite die mit 3 Tabs und Fragment - Manager erstellt und ich habe 2 weitere Fragmente hinzugefügt und bis jetzt hat alles gut funktioniert, bis ich versuche, eine Schnittstelle zu senden Haupttätigkeit und durch Bündel und Transaktion auf das dritte Fragment, das die Daten von dort aus senden:Fragment zu Fragment Schnittstelle und Transaktion ersetzen

dir auch gefallen:

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); 
    } 


} 

und es funktioniert mit Fragmente 4 (sein von Fragmente 5-4) in Ordnung, aber wenn ich versuche, Das gleiche passiert mit Fragment 3 es stürzt ab (Absturz passiert in der Transaktion Ersetzung, es ersetzt nicht das frag3 Layout) in der Tat versuchte ich mit Fragment 2 an d 1 In allen Fällen stürzt das Spiel ab (1, 2, 3), aber wenn ich weitere Fragmente hinzufüge (6 und 7), funktioniert es wieder so, als ob nur die ersten 3 funktionieren würden, kennt jemand den Grund? Vielen Dank, dass Sie

Stacktrace:

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

posten Sie Ihre stacktrace – Sony

+0

sorry für Noob zu sein, aber bekomme ich die Stacktrace durch die App mit Debug in logcat läuft? – amirsoltani

+0

@Sony Ich habe es getan – amirsoltani

Antwort

0

Nun, ich denke das Problem sein könnte, wenn Sie das Frag3 Fragment mit dem fragmentManager hinzufügen. Dieser Fehler tritt möglicherweise auf, wenn der Fragmentcontainer, in dem Sie Ihr Fragment hinzufügen möchten, nicht in der Ansichtshierarchie der Aktivität vorhanden ist. Zum Beispiel:

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

stellen Sie sicher, die ‚R.id.fragmentContainer‘ ist die richtige FrameLayout Sie zeigen auf, und es ist in Ihrer aktuellen Aktivität Layout. Da Sie ein Fragment Behälter in einem anderen Layout könnten anrufen, die in einer Folge könnte:

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

Wie sollte ich sicherstellen, dass das contairner ist in der Aktivität Layout – amirsoltani

+0

ive versucht '' zu der Aktivität, die es nicht funktioniert – amirsoltani

+0

Ist die Fragment-Container-ID (FragmeLayout) in Ihrem Activity-Layout, das gleiche Wie die ID, die Sie in der Ersetzungsmethode festlegen? Möglicherweise liegt der Fehler daran, dass eine View mit der ID, auf die Sie sich beziehen, nicht gefunden werden konnte. – CamiloCons

Verwandte Themen