検索

ホームページ  >  に質問  >  本文

android - 如何在ViewPager中的各个Fragment间传递数据并刷新Fragment界面?

tablayout+viewpager+fragment实现的下图的效果,怎么在各个Fragment中传递数据并刷新界面?

如图中,点击“菜单”中的按钮,如何在购物车中接收并刷新界面。

ringa_leeringa_lee2767日前860

全員に返信(3)返信します

  • 阿神

    阿神2017-04-17 15:02:42

    フラグメントがすでに存在する場合、fragment.setArguments(bundle) 経由でパラメータを渡そうとすると例外が発生します:

    リーリー

    Fragment を更新する私の一般的な方法は、Fragment のパブリック メソッドを定義することです。

    リーリー

    次に、更新する必要があるフラグメントを取得し、このメソッドを呼び出します。
    フラグメントが 4 つしかないことを考慮すると、配列またはリストを使用して、これら 4 つのフラグメントのインスタンスをアクティビティに保存してみることができます (この方法は比較的愚かです)。
    そして、FragmentPagerAdapter でページを切り替えるときにフラグメント インスタンスが破壊されないように、FragmentStatePagerAdapter の代わりに ViewPager を使用する必要があります。 ViewPager

    で Fragment を更新および置換する方法については、私の記事を参照してください。

    返事
    0
  • PHPz

    PHPz2017-04-17 15:02:42

    プロキシ モードを使用して、リバース バリュー転送を実装します。

    アクティビティは、これらのフラグメントの親セットに相当します (フラグメントはすべてアクティビティ内で新しいため) アクティビティ内でこれらのフラグメントを操作するのは非常に簡単です。したがって、フラグメントの 1 つがアクティビティを取得できる場合。他のフラグメントを簡単に操作できます。

    最も簡単な方法は、フラグメントにアクティビティ属性を追加することです。アクティビティ内で新しいフラグメントが作成されたら、 activity.this をフラグメントに渡します。

    しかし、一般的にはアクティビティに XXDelegate などのインターフェースを実装させ、フラグメントのコンストラクターには XXDelagate を持たせます。アクティビティの作成時にこれ (アクティビティ自体) を渡すだけです。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-17 15:02:42

    2 つのフラグメント間を移動するときに、バンドルを使用してパラメータを取得できます。 getArguments().getString("key"); を使用するだけで、キーを自分で定義できます。バンドルを渡すことができる限り、識別子とパラメーターの形式を実装できます。この原則は基本的にアクティビティ
    と同じです。例:
    Bundlebundle=new Bundle();
    bundle.putString( "key", Projsid) ;
    fragment.setArguments(bundle); flagment.commit();

    返事
    0
  • キャンセル返事