一、简介
本文我们一起来学习 DialogFragment 的用法。
二、DialogFragment 的基本使用
1. 简单使用
方法一:重写 onCreateDialog 方法, 返回一个创建的dialog对象就行,具体如下:
public class MyDialogFragment extends DialogFragment{
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog dialog = new AlertDialog.Builder(getActivity())
.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) {
}
}).create();
return dialog;
}
public class MainActivity extends AppCompatActivity {
MyDialogFragment dialogFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dialogFragment = new MyDialogFragment();
dialogFragment.show(getSupportFragmentManager(),"dialog");
}
}
方法二:通过 onCreateView 来返回一个自己写好的 view 来完成,默认会在居中显示
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_my_test,null);
return view;
}
采用接口回调传递数据
AlertDialog.Builder builder = new AlertDialog.Builder(getContext())
.setTitle("选择头像")
.setPositiveButton("相册", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(callback!=null){
callback.onPhoto();
}
}
})
.setNegativeButton("相机", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(callback!=null){
callback.onCamera();
}
}
});
return builder.create();
private