activity 实现 BottomSheetDialog底部弹窗,并在activity中获取BottomSheetDialog所在的fragment实例
时间: 2024-03-03 20:47:25 浏览: 196
要在Activity中实现一个 BottomSheetDialog 底部弹窗,可以按照以下步骤进行:
1. 创建一个继承自 BottomSheetDialogFragment 的 Fragment 类,用于显示底部弹窗内容。在该 Fragment 中重写 onCreateDialog 方法,返回一个 BottomSheetDialog 对象。
例如:
```
public class MyBottomSheetDialogFragment extends BottomSheetDialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog dialog = new BottomSheetDialog(getActivity());
dialog.setContentView(R.layout.bottom_sheet_dialog);
return dialog;
}
}
```
2. 在 Activity 中创建一个实例变量,用于保存 BottomSheetDialogFragment 的实例。
例如:
```
private MyBottomSheetDialogFragment mBottomSheetDialogFragment;
```
3. 在需要显示底部弹窗的地方,调用以下代码来显示 BottomSheetDialogFragment:
```
mBottomSheetDialogFragment = new MyBottomSheetDialogFragment();
mBottomSheetDialogFragment.show(getSupportFragmentManager(), "MyBottomSheetDialogFragment");
```
4. 要在 Activity 中获取 BottomSheetDialogFragment 所在的实例,可以在 onCreateDialog 方法中将 BottomSheetDialog 的实例传递给 Fragment,并在 Fragment 中保存该实例。
例如,在 MyBottomSheetDialogFragment 类中添加以下代码:
```
private BottomSheetDialog mBottomSheetDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBottomSheetDialog = (BottomSheetDialog) getDialog();
}
public BottomSheetDialog getBottomSheetDialog() {
return mBottomSheetDialog;
}
```
然后,在 Activity 中可以通过以下代码获取 BottomSheetDialogFragment 所在的 Fragment 实例:
```
MyBottomSheetDialogFragment fragment = (MyBottomSheetDialogFragment) getSupportFragmentManager().findFragmentByTag("MyBottomSheetDialogFragment");
BottomSheetDialog dialog = fragment.getBottomSheetDialog();
```
这样就可以在 Activity 中获取 BottomSheetDialog 所在的 Fragment 实例了。
阅读全文