activity 实现 BottomSheetDialog底部弹窗,并在activity中获取BottomSheetDialog所在的fragment实例
时间: 2024-03-03 18:47:15 浏览: 101
要实现 BottomSheetDialog 底部弹窗,首先需要定义一个继承自 BottomSheetDialogFragment 的 Fragment,例如:
```
public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_bottom_sheet, container, false);
// 初始化视图控件
return view;
}
@Override
public void onStart() {
super.onStart();
// 设置底部弹窗的样式
if (getDialog() != null) {
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
}
}
```
在 Activity 中,可以通过调用 show() 方法来显示这个弹窗。例如:
```
MyBottomSheetDialogFragment bottomSheetDialogFragment = new MyBottomSheetDialogFragment();
bottomSheetDialogFragment.show(getSupportFragmentManager(), bottomSheetDialogFragment.getTag());
```
获取 BottomSheetDialog 所在的 Fragment 实例,可以通过在 Fragment 的生命周期方法中保存自身的引用,然后在 Activity 中调用 findFragmentByTag() 方法来获取。例如:
```
public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment {
private Fragment mFragment;
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
mFragment = this;
}
public Fragment getFragment() {
return mFragment;
}
// ...
}
```
在 Activity 中,可以通过以下代码获取 BottomSheetDialog 所在的 Fragment 实例:
```
MyBottomSheetDialogFragment bottomSheetDialogFragment = (MyBottomSheetDialogFragment) getSupportFragmentManager().findFragmentByTag(MyBottomSheetDialogFragment.class.getName());
if (bottomSheetDialogFragment != null) {
Fragment fragment = bottomSheetDialogFragment.getFragment();
// 处理 fragment 实例
}
```
阅读全文