84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
tablayout+viewpager+fragment实现的下图的效果,怎么在各个Fragment中传递数据并刷新界面?
如图中,点击“菜单”中的按钮,如何在购物车中接收并刷新界面。
ringa_lee
フラグメントがすでに存在する場合、fragment.setArguments(bundle) 経由でパラメータを渡そうとすると例外が発生します:
fragment.setArguments(bundle)
Fragment を更新する私の一般的な方法は、Fragment のパブリック メソッドを定義することです。
次に、更新する必要があるフラグメントを取得し、このメソッドを呼び出します。 フラグメントが 4 つしかないことを考慮すると、配列またはリストを使用して、これら 4 つのフラグメントのインスタンスをアクティビティに保存してみることができます (この方法は比較的愚かです)。 そして、FragmentPagerAdapter でページを切り替えるときにフラグメント インスタンスが破壊されないように、FragmentStatePagerAdapter の代わりに ViewPager を使用する必要があります。 ViewPager
FragmentPagerAdapter
FragmentStatePagerAdapter
ViewPager
プロキシ モードを使用して、リバース バリュー転送を実装します。
アクティビティは、これらのフラグメントの親セットに相当します (フラグメントはすべてアクティビティ内で新しいため) アクティビティ内でこれらのフラグメントを操作するのは非常に簡単です。したがって、フラグメントの 1 つがアクティビティを取得できる場合。他のフラグメントを簡単に操作できます。
最も簡単な方法は、フラグメントにアクティビティ属性を追加することです。アクティビティ内で新しいフラグメントが作成されたら、 activity.this をフラグメントに渡します。
しかし、一般的にはアクティビティに XXDelegate などのインターフェースを実装させ、フラグメントのコンストラクターには XXDelagate を持たせます。アクティビティの作成時にこれ (アクティビティ自体) を渡すだけです。
2 つのフラグメント間を移動するときに、バンドルを使用してパラメータを取得できます。 getArguments().getString("key"); を使用するだけで、キーを自分で定義できます。バンドルを渡すことができる限り、識別子とパラメーターの形式を実装できます。この原則は基本的にアクティビティと同じです。例:Bundlebundle=new Bundle();bundle.putString( "key", Projsid) ;fragment.setArguments(bundle); flagment.commit();
フラグメントがすでに存在する場合、
リーリーfragment.setArguments(bundle)
経由でパラメータを渡そうとすると例外が発生します:Fragment を更新する私の一般的な方法は、Fragment のパブリック メソッドを定義することです。
リーリー次に、更新する必要があるフラグメントを取得し、このメソッドを呼び出します。
で Fragment を更新および置換する方法については、私の記事を参照してください。フラグメントが 4 つしかないことを考慮すると、配列またはリストを使用して、これら 4 つのフラグメントのインスタンスをアクティビティに保存してみることができます (この方法は比較的愚かです)。
そして、
FragmentPagerAdapter
でページを切り替えるときにフラグメント インスタンスが破壊されないように、FragmentStatePagerAdapter
の代わりにViewPager
を使用する必要があります。 ViewPagerプロキシ モードを使用して、リバース バリュー転送を実装します。
アクティビティは、これらのフラグメントの親セットに相当します (フラグメントはすべてアクティビティ内で新しいため) アクティビティ内でこれらのフラグメントを操作するのは非常に簡単です。したがって、フラグメントの 1 つがアクティビティを取得できる場合。他のフラグメントを簡単に操作できます。
最も簡単な方法は、フラグメントにアクティビティ属性を追加することです。アクティビティ内で新しいフラグメントが作成されたら、 activity.this をフラグメントに渡します。
しかし、一般的にはアクティビティに XXDelegate などのインターフェースを実装させ、フラグメントのコンストラクターには XXDelagate を持たせます。アクティビティの作成時にこれ (アクティビティ自体) を渡すだけです。
2 つのフラグメント間を移動するときに、バンドルを使用してパラメータを取得できます。 getArguments().getString("key"); を使用するだけで、キーを自分で定義できます。バンドルを渡すことができる限り、識別子とパラメーターの形式を実装できます。この原則は基本的にアクティビティ
と同じです。例:
Bundlebundle=new Bundle();
bundle.putString( "key", Projsid) ;
fragment.setArguments(bundle); flagment.commit();