android onactivityresult
时间: 2023-04-27 14:02:19 浏览: 63
onActivityResult是Android中的一个方法,用于在Activity之间传递数据。当一个Activity启动另一个Activity并期望在后者完成后接收结果时,就会使用该方法。在后者完成后,它将返回一个结果代码和一个Intent对象,其中包含传递的数据。开发人员可以使用这些数据来执行特定的操作。
相关问题
android fragment onactivityresult
在 Android 中,Fragment 也可以通过 startActivityForResult() 方法启动另外一个 Activity,并通过 onActivityResult() 方法接收返回的数据。在 Fragment 中使用 startActivityForResult() 方法时,要注意以下几点:
1. 需要在 Fragment 中重写 onActivityResult() 方法,而不是在 Fragment 所依附的 Activity 中重写。
2. 在 Fragment 中启动 Activity 时,需要使用 getActivity().startActivityForResult() 方法,而不是直接使用 startActivityForResult() 方法。
3. 在 Fragment 中接收返回数据时,需要调用 getActivity().onActivityResult() 方法,而不是直接调用 Fragment 的 onActivityResult() 方法。
例如,以下是一个在 Fragment 中使用 startActivityForResult() 方法的示例:
```
public class MyFragment extends Fragment {
private static final int REQUEST_CODE = 100;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_my, container, false);
}
public void startMyActivity() {
Intent intent = new Intent(getActivity(), MyActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
String result = data.getStringExtra("result");
// 处理返回数据
}
}
@Override
public void onResume() {
super.onResume();
if (getActivity() instanceof MyActivity) {
((MyActivity) getActivity()).setResult(Activity.RESULT_OK, new Intent().putExtra("result", "Hello World!"));
getActivity().finish();
}
}
}
```
在上面的示例中,我们在 Fragment 中启动了一个名为 MyActivity 的 Activity,并在 Activity 中模拟了返回数据的操作。当 Activity 被销毁时,会自动回调 Fragment 的 onActivityResult() 方法,我们可以在该方法中接收返回的数据并进行处理。
android 自定义组件获取onactivityresult值
要在自定义组件中获取 `onActivityResult` 的返回值,可以使用以下步骤:
1. 在自定义组件所在的 `Activity` 中重写 `onActivityResult` 方法,将返回值保存在变量中。
```java
public class MainActivity extends AppCompatActivity {
private int mResultCode;
private Intent mData;
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == YOUR_REQUEST_CODE) {
mResultCode = resultCode;
mData = data;
}
}
}
```
2. 在自定义组件中定义一个带有返回值的方法,该方法用于获取 `onActivityResult` 的返回值。
```java
public class MyCustomView extends View {
private int mResultCode;
private Intent mData;
public void startForResult(Activity activity, int requestCode) {
Intent intent = new Intent(activity, YourTargetActivity.class);
activity.startActivityForResult(intent, requestCode);
}
public void onActivityResult(int resultCode, Intent data) {
mResultCode = resultCode;
mData = data;
}
//...
}
```
3. 在 `onActivityResult` 方法中调用自定义组件的 `onActivityResult` 方法,将返回值传递给自定义组件。
```java
public class MainActivity extends AppCompatActivity {
private MyCustomView mCustomView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCustomView = findViewById(R.id.custom_view);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mCustomView.onActivityResult(resultCode, data);
}
}
```
这样,当从 `YourTargetActivity` 返回时,自定义组件中的 `mResultCode` 和 `mData` 就会被赋值。