activitysetresult给fragment
时间: 2023-10-23 11:08:29 浏览: 35
在 Fragment 中,可以通过调用 `getActivity()` 方法获取该 Fragment 所在的 Activity,然后在 Activity 中使用 `setResult()` 方法设置结果。
具体的实现步骤如下:
1. 在 Fragment 中定义一个接口,用于回调 Activity 中的 `setResult()` 方法:
```
public interface OnResultCallback {
void setResult(int resultCode, Intent data);
}
```
2. 在 Fragment 的 `onAttach()` 方法中获取 Activity,并将其转换为 `OnResultCallback` 接口:
```
private OnResultCallback mCallback;
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
try {
mCallback = (OnResultCallback) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException(getActivity().toString() + " must implement OnResultCallback");
}
}
```
3. 在 Fragment 中调用 Activity 的 `setResult()` 方法:
```
Intent intent = new Intent();
intent.putExtra("result", "success");
mCallback.setResult(Activity.RESULT_OK, intent);
```
4. 在 Activity 中实现 `OnResultCallback` 接口,并在 `setResult()` 方法中设置结果:
```
public class MainActivity extends AppCompatActivity implements MyFragment.OnResultCallback {
// ...
@Override
public void setResult(int resultCode, Intent data) {
setResult(resultCode, data);
finish();
}
}
```
这样,在 Fragment 中调用 `setResult()` 方法时,就会回调到 Activity 中设置结果。