📜  显示来自适配器的对话框片段 - Java (1)

📅  最后修改于: 2023-12-03 14:55:12.440000             🧑  作者: Mango

显示来自适配器的对话框片段 - Java

在Java中,我们可以通过适配器来实现对话框的显示。适配器是一种设计模式,可以使我们无需实现全部的接口方法,而只需要实现其中几个即可。

示例代码
public class DialogFragmentExample extends DialogFragment {
    private OnItemSelectedListener listener;

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            listener = (OnItemSelectedListener) context;
        } catch (ClassCastException e) {
            throw new ClassCastException(context.toString()
                    + " must implement OnItemSelectedListener");
        }
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(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 whichButton) {
                        listener.onItemSelected("OK");
                    }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        listener.onItemSelected("Cancel");
                    }
                });
        return builder.create();
    }

    public interface OnItemSelectedListener {
        void onItemSelected(String text);
    }
}
代码说明
  • DialogFragmentExample 继承自 DialogFragment,是一个对话框片段(Dialog Fragment)。我们可以通过 FragmentManager 在活动中添加、移除或替换片段。
  • onAttach() 方法中将 context 转换为 OnItemSelectedListener,这是用于与活动通信的接口。
  • onCreateDialog() 方法中通过 AlertDialog.Builder 构建对话框。我们可以设置标题、消息和按钮的监听器。
  • OnItemSelectedListener 接口需要实现 onItemSelected() 方法,这是用于接收按钮点击事件的。
使用方法

在活动中调用:

DialogFragmentExample dialogFragment = new DialogFragmentExample();
dialogFragment.show(getSupportFragmentManager(), "dialog");

当按钮被点击后,会回调 OnItemSelectedListener 接口的 onItemSelected() 方法,我们可以在这里实现自己的逻辑。