重写 `onActivityResult` 方法是为了在一个活动接收到其他活动返回的数据时处理这些数据。在 Android 开发中,这个方法在需要返回结果的活动结束时被调用。
以下是重写 `onActivityResult` 方法的步骤和示例代码:
1. **定义请求代码**:在启动新活动时,你需要定义一个请求代码来标识这个请求。例如:
```java
private static final int REQUEST_CODE = 1;
```
2. **启动新活动**:使用 `startActivityForResult` 方法启动新活动,并传递请求代码。
```java
Intent intent = new Intent(CurrentActivity.this, NewActivity.class);
startActivityForResult(intent, REQUEST_CODE);
```
3. **重写 `onActivityResult` 方法**:在启动新活动的活动中重写 `onActivityResult` 方法来处理返回的结果。
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 检查请求代码和结果代码
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// 从Intent中获取数据
String resultData = data.getStringExtra("key");
// 处理接收到的数据
// 例如,将数据显示在TextView上
TextView resultTextView = findViewById(R.id.resultTextView);
resultTextView.setText(resultData);
}
}
```
4. **在返回数据的活动中设置结果并结束活动**:在返回数据的活动中,通过设置结果和结束活动来返回数据。
```java
Intent resultIntent = new Intent();
resultIntent.putExtra("key", "Some data to return");
setResult(RESULT_OK, resultIntent);
finish();
```
完整示例代码:
**CurrentActivity.java**:
```java
public class CurrentActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_current);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(CurrentActivity.this, NewActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
});
}
以下是重写 `onActivityResult` 方法的步骤和示例代码:
1. **定义请求代码**:在启动新活动时,你需要定义一个请求代码来标识这个请求。例如:
```java
private static final int REQUEST_CODE = 1;
```
2. **启动新活动**:使用 `startActivityForResult` 方法启动新活动,并传递请求代码。
```java
Intent intent = new Intent(CurrentActivity.this, NewActivity.class);
startActivityForResult(intent, REQUEST_CODE);
```
3. **重写 `onActivityResult` 方法**:在启动新活动的活动中重写 `onActivityResult` 方法来处理返回的结果。
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// 检查请求代码和结果代码
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// 从Intent中获取数据
String resultData = data.getStringExtra("key");
// 处理接收到的数据
// 例如,将数据显示在TextView上
TextView resultTextView = findViewById(R.id.resultTextView);
resultTextView.setText(resultData);
}
}
```
4. **在返回数据的活动中设置结果并结束活动**:在返回数据的活动中,通过设置结果和结束活动来返回数据。
```java
Intent resultIntent = new Intent();
resultIntent.putExtra("key", "Some data to return");
setResult(RESULT_OK, resultIntent);
finish();
```
完整示例代码:
**CurrentActivity.java**:
```java
public class CurrentActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_current);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(CurrentActivity.this, NewActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
});
}