有一些方法。
1.通過活動
你有片段A和片段B在您的活動。 你也有片段A和片段B.你的活動
MainActivity.java
FragmentA A;
FragmentB B;
private void updateB(){
if(B!= null){
B.refresh();
}
}
FragmentA.java
MainActivity mainActivity;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mainActivity = getActivity();
}
private void addFavorite(){
//add item to DB
//reload Fragment A
mainActivity.updateB();
}
FragmentB.java
MainActivity mainActivity;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mainActivity = getActivity();
}
@Override
public void onDestroyView() {
mActivity.unregisterReceiver(myReceiver);
super.onDestroyView();
}
private void refresh(){
...
}
2.使用廣播
FragmentB.java
private MyReceiver myReceiver;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
myReceiver = new MyReceiver();
IntentFilter filter = new IntentFilter(MyReceiver.ACTION);
mActivity.registerReceiver(myReceiver, filter);
}
public class MyReceiver extends BroadcastReceiver {
public static final String ACTION = "com.xxxx.test";
public static final String TYPE_REFRESH = "TYPE_REFRESH";
@Override
public void onReceive(final Context context, final Intent intent) {
String type = intent.getStringExtra("type");
if (type.equals(TYPE_REFRESH)) {
refresh();
}
}
}
public static void sendBroadcastForRefresh(Context context) {
Intent intent = new Intent();
intent.setAction(MyReceiver.ACTION);
intent.putExtra("type", TYPE_REFRESH);
context.sendBroadcast(intent);
}
FragmentA.java
private void addFavorite(){
....
FragmentB.sendBroadcastForRefresh(mContext);
}
3。重新片段
FragmentManager fManager = getSupportFragmentManager();
FragmentTransaction fTransaction = fManager.beginTransaction();
B= FragmentB.newInstance();
fTransaction.replace(R.id.fragment_b_id, B, "B Tag"); // <-- this one will recreate your fragment
fTransaction.commitAllowingStateLoss(); //or fTransaction.commit();
正是我想要它。非常感謝,男人:) – Jacky
很高興我能幫上忙。 – Orvenito