有一个 RecyclerView
其中有一个 item
,我需要打开 DialogFragment
单击。
换成普通的 Fragment
我用它写了以下内容:
holder.ll_main.setOnClickListener(v -> {
FragmentBabyIsland fragment = new FragmentBabyIsland(); // you fragment
FragmentManager fragmentManager = ((FragmentActivity) v.getContext()).getSupportFragmentManager(); // instantiate your view context
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.animator.nav_default_enter_anim, R.animator.nav_default_exit_anim,
R.animator.nav_default_pop_enter_anim, R.animator.nav_default_pop_exit_anim);
fragmentTransaction.replace(R.id.fragment, fragment);// your container and your fragment
fragmentTransaction.addToBackStack("tag");
fragmentTransaction.commit();
});
为了进入dialogfragment,我写了以下内容
holder.ll_main.setOnClickListener(v -> {
openDialog();
});
private void openDialog() {
DialogSort dialogSort = new DialogSort();
dialogSort.show(requireActivity().getSupportFragmentManager(), "SortDialog");
}
但由于它是一个适配器,它发誓 requireActivity()
如何修复?
1条答案
按热度按时间3qpi33ja1#
在适配器中定义
Activity
作为:然后将构造函数更改为:
完成此操作后,可以使用
mActivity
显示对话框:请注意,如果您已经使用
Context
,替换为AppCompatActivity
或者在构造函数中同时使用它们。如果你把它换掉就更好了。