Android 创建 DialogFragment
在 Android 开发中,我们经常需要向用户展示一些提示信息、输入框等弹出窗口。为了更加灵活地管理这些弹出窗口,Android 提供了 DialogFragment 类,用于创建可重用的对话框组件。本文将介绍 DialogFragment 的使用方法,并提供相应的代码示例。
DialogFragment 简介
DialogFragment 是一个特殊的 Fragment,用于在 Activity 中展示对话框。与普通的 Dialog 不同,DialogFragment 可以更好地与 Activity 生命周期进行关联,并且可以通过 FragmentManager 进行管理。这意味着我们可以在 Activity 的状态改变时,如旋转屏幕或进入后台,保持对话框的状态并正确地重建。此外,DialogFragment 还支持主题样式和动画效果的设置,以提供更好的用户体验。
创建 DialogFragment
要创建一个 DialogFragment,首先需要创建一个继承自 DialogFragment 的子类。在这个子类中,我们可以自定义对话框的内容和样式。
public class MyDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
// 创建对话框实例
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("提示")
.setMessage("这是一个对话框")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 处理确定按钮点击事件
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 处理取消按钮点击事件
return builder.create();
在上面的示例中,我们创建了一个名为 MyDialogFragment 的 DialogFragment 子类。在 onCreateDialog
方法中,我们使用 AlertDialog.Builder
创建了一个包含标题、消息和确定、取消按钮的对话框。通过设置按钮的点击监听器,可以在用户点击按钮时执行相应的逻辑操作。
显示 DialogFragment
要显示 DialogFragment,我们需要使用 FragmentManager。可以通过调用 DialogFragment.show
方法,传入一个 FragmentManager 对象和一个字符串标签来显示对话框。通常,我们会在 Activity 的某个按钮点击事件中触发显示对话框的操作。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDialogFragment dialogFragment = new MyDialogFragment();
dialogFragment.show(getSupportFragmentManager(), "dialog");
在上面的示例中,我们通过点击按钮的方式显示了 MyDialogFragment 对话框。在 show
方法中,我们传入了 getSupportFragmentManager()
方法返回的 FragmentManager 对象,以及一个字符串标签 "dialog"
。标签用于在需要的时候查找和操作对话框。
DialogFragment 生命周期
DialogFragment 的生命周期与普通的 Fragment 相似,但有一些额外的方法和事件可以使用。
onCreate
:在 Fragment 被创建时调用,在此方法中可以进行初始化操作。
onCreateDialog
:在创建对话框时调用,必须在此方法中返回一个 Dialog 对象。
onStart
:在对话框显示时调用,可以在此方法中执行一些与 UI 相关的操作。
onDismiss
:在对话框被关闭时调用,可以在此方法中执行一些清理工作。
下面是一个完整的示例,演示了如何创建和显示一个简单的 DialogFragment。
public class MainActivity extends AppCompatActivity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MyDialogFragment dialogFragment = new MyDialogFragment();
dialogFragment.show(getSupportFragmentManager(), "dialog");
public static class MyDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("提示")
.setMessage("这是一个对话框")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getActivity(), "点击了确定按钮", Toast.LENGTH
java 三国游戏 java三国游戏代码
用Java编译“三国群英传”游戏(本质石头剪刀布) package com.domain; //玩家类 public abstract class Player {//玩家有哪些属性呢?
protected String name; //昵称
protected int score; //得分
//注意,出拳类类型是固定,是每一个玩家都有的,所以把设计为类的静态属性。方便我们去调用。
public