android DialogFragment 创建的两种方式 ,完整的代码例子
时间: 2024-02-22 22:00:44 浏览: 133
好的,下面是两种常见的创建 `DialogFragment` 的方式,并且给出了完整的代码例子。
### 方式一:通过继承 DialogFragment 类创建
```java
public class CustomDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Title")
.setMessage("Message")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do something
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do something
}
});
return builder.create();
}
}
```
在这个例子中,我们继承了 `DialogFragment` 类,并实现了其 `onCreateDialog` 方法,用于创建对话框。在 `onCreateDialog` 方法中,我们创建了一个 `AlertDialog.Builder` 对象,并设置了对话框的标题、消息和按钮。然后,我们通过 `builder.create()` 方法创建了一个 `AlertDialog` 对象,并将其返回。
使用该方式创建 `DialogFragment` 时,我们需要在 `Activity` 或 `Fragment` 中调用 `CustomDialogFragment` 的 `show` 方法来显示对话框,例如:
```java
CustomDialogFragment dialog = new CustomDialogFragment();
dialog.show(getSupportFragmentManager(), "custom_dialog");
```
### 方式二:通过静态方法创建
```java
public class CustomDialogFragment extends DialogFragment {
public static CustomDialogFragment newInstance() {
return new CustomDialogFragment();
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Title")
.setMessage("Message")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do something
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do something
}
});
return builder.create();
}
}
```
在这个例子中,我们创建了一个名为 `newInstance` 的静态方法,用于创建 `CustomDialogFragment` 对象。在 `onCreateDialog` 方法中,我们创建了一个 `AlertDialog.Builder` 对象,并设置了对话框的标题、消息和按钮。然后,我们通过 `builder.create()` 方法创建了一个 `AlertDialog` 对象,并将其返回。
使用该方式创建 `DialogFragment` 时,我们可以直接调用 `CustomDialogFragment.newInstance()` 方法来创建对话框,例如:
```java
CustomDialogFragment.newInstance().show(getSupportFragmentManager(), "custom_dialog");
```
以上两种方式都可以创建一个简单的对话框,并在其中添加自己需要的控件和逻辑。
阅读全文