在Android开发中,startActivityForResult
用于启动一个新的Activity,并在该Activity完成后返回结果
- 创建一个Intent对象,用于启动新的Activity。
- 使用
startActivityForResult(intent, requestCode)
方法启动新的Activity。requestCode
是一个整数,用于标识请求。 - 在新的Activity中处理完成后,使用
setResult(resultCode, intent)
方法设置结果。resultCode
是一个整数,表示结果状态;intent
是一个包含返回数据的Intent对象。 - 在原始Activity中重写
onActivityResult(requestCode, resultCode, data)
方法,以处理返回的结果。
下面是一个简单的示例:
假设我们有两个Activity:MainActivity
和SecondActivity
。在MainActivity
中,我们通过点击一个按钮来启动SecondActivity
,并等待其返回结果。
MainActivity.java:
public class MainActivity extends AppCompatActivity { private static final int REQUEST_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { String result = data.getStringExtra("result"); Toast.makeText(this, "Result: " + result, Toast.LENGTH_SHORT).show(); } } }
在SecondActivity
中,我们处理完成后,将结果设置为一个字符串,并返回给MainActivity
。
SecondActivity.java:
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("result", "Hello from SecondActivity!"); setResult(RESULT_OK, intent); finish(); } }); } }
当用户点击SecondActivity
中的按钮时,将返回一个字符串结果给MainActivity
,并显示一个Toast消息。