2016-05-30 7 views
1

私のアプリケーションには、1つのアクティビティと3種類のフラグメントがあります。フラグメントからツールバーアクションを切断する方法

MainActivityToolBarを持ち、およびフラグメントは、このToolBarに、独自のアクションを追加 - 断片がToolBar自分自身を持っていないので。

  1. (A)フラグメントはEditTextCheckBoxSpinner、日付 および時刻フィールドを持つformFragmetあります。ユーザが フィールドに何かを変更したときにそれらのフィールドを更新するアクションがToolBarにあります。
  2. (B)フラグメントはListFragmentであり、レコードのリストを持っています。 ToolBarでアクションを実行する必要はありません。
  3. (C)フラグメントは、(A) フラグメントおよび(B)フラグメントの両方またはタブ中の他の任意の組み合わせを含むことができるタブ付きフラグメントである。 (ViewPager)。 TabbedFragmentToolBarで任意のアクションを必要としませんが、FormFragment(A)は現在のタブにある場合、それは ディスプレイそのFormFragmentのアクション、ので、それは大丈夫だし、それ が正常に動作します。

問題は、このです:ユーザーがListFragment(B)次の画面からレコードを選択した場合

FormFragment(A)であり、ユーザは、フィールドの値を変更します。その後、ユーザーはToolBar(更新)からアクションを選択し、フォームが更新されます。

成功した更新の後、ユーザは次にListFragment(B)に(それがBackStackをポップし、ListFragmentを示す活動によって加えToolBarの矢印に触れる)戻り、ユーザーは、リスト内の別のアイテムを選択します。別の(新しい)FormFragmentは、フィールド内の異なるデータで開きます。

ユーザーはこのフォームで何かを変更し、ツールバーの更新アクションを押します。

変更が保存されません!その理由は、この(新しい)formFragmentToolBarからのアクションは、依然として前のFormFragmentに添付されているからです。

誰にもこの問題がありましたか?

フラグメントからアクションを切り離す方法はありますか?

Androidは、作成時にツールバーの新しいアクションを新しいフラグメントに設定すると思いました。しかし明らかにそうしていません。

誰かが助けてもらえますか?

P.S. 必要に応じてコードの一部を提供します。

ありがとうございます。

答えて

0

この問題の解決策は、TabbedPagerAdapterでgetChildFragmentManager()を使用することです。

アクティビティのgetSupportFragmentManager()は、ViewPagerを持つTabbedFragmentのようなネストされたフラグメントを使用していてViewPagerに(子)フラグメントがあるときは間違っています。

関連する問題