#java #android #android-fragments #deprecated
#java #Android #android-фрагменты #устаревший
Вопрос:
Как я могу вызвать метод фрагмента из DialogFragment, зная, что TargetFragment теперь устарел?
В прошлом я мог делать это таким образом:
ParentFragment
DialogFragment dialog = new DialogFragment();
dialog.setTargetFragment(this, 0);
dialog.show(this.getSupportFragmentManager(), "tag");
DialogFragment
((ParentFragment) this.getTargetFragment()).myMethod();
Это больше невозможно, потому что TargetFragment теперь устарел.
Я читал, что я могу использовать setFragmentResultListener() для передачи переменных, но как я могу вызвать метод ParentFragment.myMethod() из DialogFragment?
Ответ №1:
Вот решение, которое я нашел.
ParentFragment
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getParentFragmentManager().setFragmentResultListener("result", this, new FragmentResultListener() {
public void onFragmentResult(@NonNull String requestKey, @NonNull Bundle bundle) {
String action = bundle.getString("action");
if (action != null)
if (action.equals("myMethod"))
ParentFragment.this.myMethod();
}
});
}
DialogFragment
Bundle result = new Bundle();
result.putString("action", "myMethod");
this.getParentFragmentManager().setFragmentResult("result", result);
Комментарии:
1. Новый способ выглядит излишне сложным по сравнению со старым способом…