Android 在自定义dialog里获取 onActivityResult 方法
时间: 2024-09-20 21:07:08 浏览: 60
Android中用Builder模式自定义Dialog的方法
在Android中,`onActivityResult()`方法通常用于Activity处理启动其他应用(如相机、图库等)并返回结果的情况。然而,DialogFragment并不直接支持回调这个方法,因为它不是完整的Activity。如果你在DialogFragment中需要处理外部Activity的结果,你可以通过以下步骤间接实现:
1. **创建一个内部类**:在你的DialogFragment内部定义一个匿名内部类,该类实现了`OnActivityResultListener`接口。这个接口有一个`onActivityResult()`方法,会在目标Activity返回结果时被调用。
```java
DialogFragment dialog = new DialogFragment() {
private final OnActivityResultListener listener = new OnActivityResultListener() {
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// 这里处理返回的数据
}
};
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
listener.onActivityResult(requestCode, resultCode, data);
}
// ...其他的DialogFragment生命周期方法
};
```
2. **设置监听**:在需要启动外部Activity的地方,使用`startActivityForResult()`方法,并将创建的监听器传递给它。
```java
Intent intent = new Intent(this, CameraActivity.class);
intent.putExtra(...); // 需要传递的数据
dialog.startActivityForResult(intent, REQUEST_CODE相机请求码);
```
3. **处理结果**:当外部Activity完成操作并返回时,你的DialogFragment的`onActivityResult()`会调用内部监听器的方法,那里你可以处理返回的结果。
请注意,DialogFragment中的`REQUEST_CODE`应当与你在外部Activity中使用的相同,以便能够正确匹配结果。
阅读全文