在Android开发中,你可以通过在Fragment中使用startActivityForResult
和onActivityResult
方法来获取从Activity返回的结果。以下是一个简要的步骤说明和代码示例:
步骤:
-
启动Activity并请求返回值: 使用
startActivityForResult
方法启动目标Activity,并请求返回值。 -
在Fragment中重写
onActivityResult
方法: 当目标Activity返回结果时,onActivityResult
方法会被调用,你可以在该方法中处理返回的结果。
示例代码:
Fragment代码:
import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
public class MyFragment extends Fragment {
private static final int REQUEST_CODE = 1;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 启动目标Activity并请求返回值
Intent intent = new Intent(getActivity(), TargetActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) {
if (data != null) {
String result = data.getStringExtra("key");
// 处理返回的结果
}
}
}
}
TargetActivity代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
public class TargetActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_target);
// 处理点击事件或其他操作以返回结果
findViewById(R.id.button_return_result).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent resultIntent = new Intent();
resultIntent.putExtra("key", "result_value");
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
});
}
}
注意事项:
- 确保在启动目标Activity时传递正确的请求码(例如上面的
REQUEST_CODE
)。 - 在目标Activity中,确保调用
setResult
并传递结果Intent。 - 在Fragment的
onActivityResult
方法中处理返回的结果。
这样,你就可以在Fragment中获取从Activity返回的值了。如果你使用的是FragmentResultAPI
(API Level 30引入),可以使用新的方式来实现更简洁的代码,但上述方法在所有支持的API Level中都适用。