DialogFragment是一種特殊的Fragment,用于顯示對話框或彈出窗口。它提供了一種可重用的方式來顯示和管理對話框,并允許在屏幕旋轉或配置更改時保存對話框的狀態。
DialogFragment的用法如下:
示例代碼如下:
public class MyDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Dialog Title")
.setMessage("Dialog Message")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 處理確定按鈕點擊事件
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 處理取消按鈕點擊事件
}
});
return builder.create();
}
}
在需要顯示對話框的地方,可以使用以下代碼來啟動DialogFragment實例:
MyDialogFragment dialogFragment = new MyDialogFragment();
dialogFragment.show(getSupportFragmentManager(), "dialog");
在DialogFragment中,還可以通過以下方式自定義對話框的布局:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dialog, container, false);
// 添加用戶交互控件,并設置相關事件監聽器
Button button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 處理按鈕點擊事件
}
});
return view;
}
當需要關閉對話框時,可以調用dismiss()方法:
dialogFragment.dismiss();
可以通過重寫onDismiss()方法或實現DialogInterface.OnDismissListener接口來處理對話框關閉時的事件:
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
// 處理對話框關閉事件
}