📅  最后修改于: 2023-12-03 14:55:12.440000             🧑  作者: Mango
在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()
方法,我们可以在这里实现自己的逻辑。