Обновите RecyclerView в Activity после добавления новых данных в другой фрагмент - PullRequest
0 голосов
/ 14 января 2019
  1. Операция с установленным recycerView, и операция запускает фрагмент для вставки новых данных.

    getSupportFragmentManager()
    .beginTransaction()
    .setCustomAnimations(R.anim.dialog_drop, R.anim.dialog_rise_up)
    .replace(R.id.frame_layout, dropDownDialogue)
    .addToBackStack(null)
    .commit();`
    
  2. Фрагмент имеет кнопку сохранения, которая завершает фрагмент, как показано ниже:

    save.setOnClickListener(new View.OnClickListener() {
         @Override
         public void Onclick(View v){
         //extract data from user.
         adapter.notifyDataSetChanged();
         getActivity().getSupportFragmentManager().popBackStackImmediate();
        }
    });
    

    проблема в том, что переработчик не обновляется до перезапуска Activity, хотя onResume и onStart существует с adapter.notifyDataSetChanged();

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Вы можете использовать BroadcastReciever для получения уведомления при нажатии кнопки сохранения. Например, зарегистрируйте его внутри вашего Activity:

private void registerReciver() {
    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
                // broadcast receiver is fired reload your data here
        }
    };
    IntentFilter intentFilter = new IntentFilter("action");
    this.registerReceiver(receiver, intentFilter);
}

Вызовите registerReciver(); в вашем onCreate() методе, теперь вы можете запустить его с кнопки save:

                        Intent intent = new Intent();
                        intent.setAction("action");
                        getActivity().sendBroadcast(intent);

После нажатия save должна быть вызвана кнопка onReceive. Теперь вы можете получить данные снова и перезагрузить. Даже используя Intent, вы можете при необходимости передавать данные в Activity.

0 голосов
/ 14 января 2019

https://developer.android.com/guide/components/activities/activity-lifecycle

Если вы используете Fragment, он должен быть локальным для некоторого Activity (возможно, того, который содержит ваш RecyclerView). Внутри этого Fragment вы можете получить доступ к Activity, содержащему его, с помощью getActivity() вместе с любым из его открытых членов и методов.

Пожалуйста, см. этот вопрос SO для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...