2017-04-15 13 views
1

このトピックには多くのスレッドがありますが、何も助けになることはありません。私は私のコードをポストcan't、しかし、私は私の状況を説明しようと :onsaveinstancestateの後にIllegalStateExceptionがこのアクションを実行できません

- 私はIllegalStateExceptionを取得:onSaveInstanceState

後、私はDrawerLayout /ナビゲーションとの活動のメインを(持ってこのアクションを実行することはできません引き出し)。この活動では、常に1つの断片です。最初は、WelcomePageという断片があります。

クリックすると、フラグメントが新しいフラグメント(私はそれをFootballClubsと呼ぶ)に置き換えられます。このフラグメントにはViewPagerが含まれているため、複数のページで構成されています。各ページはフラグメントFootballClubです。 (したがって、FootballClubsの断片は、複数のFootballClub断片で構成されています)。各FootballClubには、ユーザーがクリックできるボタンがあります。クリックすると新しいフラグメントが開きます(私はNewFragmentと呼んでいます)。

最初はすべてが正常で例外はスローされません。新しいフラグメントが例外なく正しく表示されるたびに、できるだけ頻繁にボタンをクリックし、onBackPressed ViewPagerでFootballClubsに戻ります。しかし、私がスマートフォンを回すと、画面の向きが少なくとも1回は変わったので、ボタンをクリックして新しいフラグメント(何を表示したいか)を開くと次のようになります:

IllegalStateException:これを実行できませんonSaveInstanceState

後のアクション、私はこのコードでWelcomePage/FootballClubs/NewFragment断片を置き換える:

protected void replaceSubfragment(int containerID, Fragment newFragment) { 
     FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
     transaction.replace(containerID, newFragment); 
     transaction.commit(); 
} 

例外は(transaction.commitにスローされます)。私は)( transaction.commitを交換する場合

  • ;: containerIdは、常にいくつかの追加情報と同じ(アクティビティ・レイアウトのでframeLayout)

    です と transaction.commitAllowingStateLoss(); 私はこの例外を取得します:IllegalStateException:アクティビティが破棄されました(私はクリックしても全く同じですが)

  • すべてのフラグメントが私のFragmentActivityクラスMainで置き換えられます。ボタンをクリックすると、SectionPageのSubclassが注目され、FragmentActivityがリスナーをFragmentActivityで置き換えることができます(BaseActivityはListenerをFootballClubsフラグメントに置き換えます)。

  • 私はFragmentActivityのフラグメントを置き換えるだけなので、getChildFragmentManager()は使用しません。 (私がこれまで覚えていた限り、これもうまくいきませんでした)

  • オリエンテーションが変更されたときにアクティビティが破壊され、再作成されることがわかりましたが、この情報では何もできません。アプリ全体私は私が私のFragmentActivityではあまりにも

  • IllegalStateExceptionが取得クリックボタンの代わりにNewFragmentのダイアログを表示したい場合は、私は変数activeModuleを持って

  • このボタンを除いて完璧に動作します。ここで私はactiveModule.isAdded()をチェックできます。例外がスローされると、isAdded()はfalseを返します。だから私は、エラーがスローされるかどうかを確認することができます

私は私の問題を説明できることを願っています。画面の向きにはすべてのものが残っています。理由はわかりません。 詳細情報が必要な場合は、私に尋ねてください。

ありがとうございます!

答えて

0

私は例外がViewPagerのためだと確信していますが、私は解決策を見つけませんでした。

Finnally、私は 'NewFragment'を呼び出すことを避けるための良い方法を見つけました。今私はこの例外を取得しません。もう答える必要はありません。