2017-11-28 6 views
0

Google PlayコンソールでIllegalStateExceptionが表示されますが、これは再現できません。ここでIllegalStateException - フラグメントが存在しない

は、スタックトレースです:

java.lang.RuntimeException: 
     at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3253) 
     at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3349) 
     at android.app.ActivityThread.access$1100 (ActivityThread.java:221) 
     at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1794) 
     at android.os.Handler.dispatchMessage (Handler.java:102) 
     at android.os.Looper.loop (Looper.java:158) 
     at android.app.ActivityThread.main (ActivityThread.java:7224) 
     at java.lang.reflect.Method.invoke (Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230) 
     at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120) 
Caused by: java.lang.IllegalStateException: 
     at android.support.v4.app.FragmentManagerImpl.getFragment (FragmentManager.java:668) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:999) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1252) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1234) 
     at android.support.v4.app.FragmentManagerImpl.dispatchCreate (FragmentManager.java:2041) 
     at android.support.v4.app.Fragment.performCreate (Fragment.java:1964) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1029) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1252) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1234) 
     at android.support.v4.app.FragmentManagerImpl.dispatchCreate (FragmentManager.java:2041) 
     at android.support.v4.app.Fragment.performCreate (Fragment.java:1964) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1029) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1252) 
     at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1234) 
     at android.support.v4.app.FragmentManagerImpl.dispatchCreate (FragmentManager.java:2041) 
     at android.support.v4.app.FragmentController.dispatchCreate (FragmentController.java:163) 
     at android.support.v4.app.FragmentActivity.onCreate (FragmentActivity.java:331) 
     at android.support.v7.app.AppCompatActivity.onCreate (AppCompatActivity.java:85) 
     at com.example.eliran.forum.RootActivity.onCreate (RootActivity.java:53) 
     at com.example.eliran.forum.MainActivity.onCreate (MainActivity.java:58) 
     at android.app.Activity.performCreate (Activity.java:6876) 
     at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1135) 
     at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3206) 

私は断片を含んでNavigationViewで活性を有しています。

私は戻るボタンのユーザーを押して、次のコードを含む関数が呼び出されたときに、この例外が発生したことを疑う:

if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
    getSupportFragmentManager().popBackStack(); 
} 

グーグルプレイコンソールがこれを表示しませんが、これはあります例外エラー:

throwException(new IllegalStateException("Fragment no longer exists for key " 
      + key + ": index " + index)); 
+0

NavigationViewでフラグメントを交換しようとしますが、フラグメントを追加しません。フラグメントを置き換える場合は、addToBackStack()を使用しないでください。 –

+0

私はfragmentを置き換え、次にfragmentTransaction.addToBackStack(null)を置き換えます。 –

+0

代わりにgetFragmentManager()を使用してください –

答えて

1

おそらくコードのどこかでsetTargetFragment()を使用します。 これを使用しないでください。 代わりに、以下のようにコールバックとリスナーを介してfragemnts間で通信します。 in fragmentDialog -

protected OnRemovedTopicListener callback = null;

public interface OnRemovedTopicListener { 
    public abstract void onTopicRemoved(int position); 
} 

public void setOnRemovedTopicListener(OnRemovedTopicListener l){ 
    callback = l; 
} 

及びコールバック使用 - callback.onTopicRemoved(位置)。親フラグメントで

-

dialogFragment.setOnRemovedTopicListener(new ForumTopicDialogFragment.OnRemovedTopicListener() { 
     @Override 
     public void onTopicRemoved(int position) { 
      // you code here 
     } 
    }); 
関連する問題