Закрыть DialogFragment, кнопкой, из другого Fragment
У меня в DialogFragment находиться ViewPager который отображает 2 Fragmentа, мне нужно чтобы по нажатию на View из Fragment закрывался мой DialogFragment. Как это сделать?
DialogFragment
public class DialogProfile extends DialogFragment {
static WrapContentViewPager viewPager;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_profile_tab, container, false);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
getDialog().requestWindowFeature(STYLE_NO_TITLE);
setCancelable(false);
viewPager = view.findViewById(R.id.pager_news_favorites);
setupViewPager(viewPager);
return view;
}
private void setupViewPager(WrapContentViewPager viewPager) {
PagerAdapter adapter = new PagerAdapter(getChildFragmentManager());
adapter.addFragment(new FragmentDialogProfile(), "Profile");
adapter.addFragment(new FragmentDialogFullInfoProfile(), "FullInfoProfile");
viewPager.setAdapter(adapter);
}
}
Один из Fragment
public class FragmentDialogFullInfoProfile extends Fragment
{
CardView back, close;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_dialog_full_info_profile, container, false);
}
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onViewCreated(@NonNull final View view, @Nullable Bundle savedInstanceState){
close = view.findViewById(R.id.close);
close.setOnClickListener(v -> {
});
back = view.findViewById(R.id.back);
back.setOnClickListener(v -> {
int current = DialogProfile.viewPager.getCurrentItem();
if(current != 0) {
DialogProfile.viewPager.setCurrentItem(current - 1, true);
}
});
}
}
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
К примеру можно попробовать так:
Fragment prev = getSupportFragmentManager().findFragmentByTag("fragment_dialog");
if (prev != null) {
DialogFragment df = (DialogFragment) prev;
df.dismiss();
}
плюс можно добавить проверки чтобы ничего не упало когда данный диалог не покажется:
if (dialogFragment != null
&& dialogFragment.getDialog() != null
&& dialogFragment.getDialog().isShowing()
&& !dialogFragment.isRemoving()) {
/// hide it
} else {
//dialog is not showing
}
если приведенный способ не возымеет результат - есть такой вариант:
getDialog().dismiss();