2016-11-11 5 views
0

У меня есть два фрагмента, называемых фрагментами и фрагментами B. Я могу перемещаться из FragmentA в FragmentB, добавляя FragmentA в back-stack. Затем я делаю некоторую работу над FragmentB, и в соответствии с изменениями, внесенными в FragmentB, FragmentA должен быть обновлен, когда я вернусь к FragmentA, нажав кнопку «Назад». В любом случае, для достижения этого сценария?Обновление предыдущего фрагмента из текущего фрагмента

+0

введите свою функцию обновления и назовите ее в разделе «Осколки фрагмента». Пожалуйста, проверьте, пришли ли вы из фрагмента B перед вызовом функции, потому что onResume вызовет и в другом случае. –

ответ

0

Да, вы можете сделать это через Activity, который содержит и Fragments, реализующий callbacks.

Посмотри here

Надеются, что это помогает.

0

вы можете создать метод с данными вы хотите обновить в Fragmenta в деятельности, а затем получить данные Fragmenta в onResume о чем-то

//method in activity with the data to set 
public void setData(recieve data to be set) 
{ 
    //data you want to show in FragmentA; 
    } 

От fragmentB УстановитьДанные

((MainActivity)getActivity()).setData(send some data); 

Создать по более активному методу, который дает вам данные, которые вы установили , а затем из фрагментаA getData()

((MainActivity)getActivity()).getData(send some data); 
0

Вы можете использовать LocalBroadcastManager для этого же. Зарегистрируйте его на Attach and Detach из Fragment, где вам нужно обновить, как показано ниже.

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
    LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
      _onProfileUpdate, 
      new IntentFilter(UserDefault.broadcastProfileUpdate)); 

} 

@Override 
public void onDetach() { 
    super.onDetach(); 
    LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(
      _onProfileUpdate); 
} 

Создать Ручку в вашем фрагменте ..

private BroadcastReceiver _onProfileUpdate = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     setUpBasicInfo(); 
    } 
}; 

И всякий раз, когда необходимо обновить этот фрагмент, просто вызовите слушатель из другого фрагмента. Вы также можете передать требуемый параметр в намерении.

Intent in = new Intent(UserDefault.broadcastProfileUpdate); 
          LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(in); 

Здесь UserDefault.broadcastProfileUpdate некоторые статические строки или пусть клавишу сказать.

Смежные вопросы