Да, если вы вызвали setArguments (bundle) до того, как ваш фрагмент станет активным.Тогда ваш фрагмент оттуда после имеет пакет, который вы можете обновить.Чтобы избежать вашей проблемы, вы должны обновить исходный пакет и не должны вызывать setArguments во второй раз.Поэтому, следуя исходной конструкции фрагмента, измените аргументы фрагмента с помощью кода, подобного
frg.getArguments().putString("someKey", "someValue");
. Затем эти аргументы будут доступны в вашем фрагменте и будут сохраняться и восстанавливаться при изменении ориентации и т. Д.этот метод также полезен, когда фрагмент создается с помощью xml в макете.Обычно никто не мог бы установить аргументы на такой фрагмент;способ обойти это ограничение - создать конструктор без аргументов, который создает пакет аргументов следующим образом:
public MyFragment() {
this.setArguments(new Bundle());
}
Позже где-нибудь в методе onCreate вашей деятельности вы затем выполните:
FragmentManager mgr = this.getSupportFragmentManager();
Fragment frg = mgr.findFragmentById(R.id.gl_frgMyFragment);
Bundle bdl = frg.getArguments();
bdl.putSerializable(MyFragment.ATTR_SOMEATTR, someData);
Это помещает данные в пакет аргументов, который затем будет доступен для кода в вашем фрагменте.