在Android中,DialogFragment允许你在一个对话框中处理回调。为了实现这个功能,你需要在DialogFragment中创建一个接口,并在宿主Activity中实现这个接口。下面是一个简单的示例:
- 首先,在你的DialogFragment中创建一个接口:
public class MyDialogFragment extends DialogFragment { public interface OnDialogResultListener { void onResult(int requestCode, int resultCode, @Nullable Bundle data); } private OnDialogResultListener mListener; // ... 其他代码 }
- 在你的DialogFragment中,当用户点击某个按钮时,调用接口方法并传递结果:
public class MyDialogFragment extends DialogFragment { // ... 接口定义和其他代码 public void setOnDialogResultListener(OnDialogResultListener listener) { mListener = listener; } private void onPositiveButtonClick() { // 处理正按钮点击事件 if (mListener != null) { mListener.onResult(REQUEST_CODE, RESULT_OK, null); } dismiss(); } // ... 其他代码 }
- 在你的宿主Activity中实现这个接口,并重写
onResult
方法:
public class MainActivity extends AppCompatActivity implements MyDialogFragment.OnDialogResultListener { @Override public void onResult(int requestCode, int resultCode, @Nullable Bundle data) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { // 处理回调结果 } } // ... 其他代码 }
- 当你在宿主Activity中显示DialogFragment时,设置回调监听器:
MyDialogFragment dialogFragment = new MyDialogFragment(); dialogFragment.setOnDialogResultListener(this); dialogFragment.show(getSupportFragmentManager(), "MyDialogFragment");
现在,当DialogFragment中的正按钮被点击时,onResult
方法将在宿主Activity中被调用,你可以在这个方法中处理回调结果。