onActivityResult和onCreate什么区别
时间: 2023-04-10 18:04:57 浏览: 74
onActivityResult和onCreate是Android开发中的两个生命周期方法。onCreate是Activity创建时调用的方法,而onActivityResult是当Activity返回结果时调用的方法。onCreate用于初始化Activity的各种资源和变量,而onActivityResult则用于处理其他Activity返回的结果数据。
相关问题
onactivityresult不执行
onActivityResult不执行可能有以下几种原因:
1. startActivityForResult方法没有正确调用:在启动一个Activity时,需要使用startActivityForResult方法,而不是startActivity方法。如果使用了错误的方法,那么onActivityResult方法就不会被执行。
2. requestCode参数传递错误:在调用startActivityForResult方法时,需要传递一个requestCode参数,用于标识这个请求。在onActivityResult方法中,需要根据这个requestCode参数来判断是哪个请求的结果。如果requestCode参数传递错误,那么onActivityResult方法就不会被执行。
3. setResult方法没有正确调用:在一个Activity结束时,需要使用setResult方法来设置返回结果。如果没有正确调用setResult方法,那么onActivityResult方法就不会被执行。
4. Activity的launchMode属性设置错误:如果启动的Activity的launchMode属性设置为singleInstance或singleTask,那么onActivityResult方法就不会被执行。
5. Activity的finish方法被调用:如果启动的Activity在执行完毕后调用了finish方法,那么onActivityResult方法就不会被执行。
6. Activity的onCreate方法没有正确实现:如果启动的Activity的onCreate方法没有正确实现,那么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` 就会被赋值。