在安卓开发中,Intent
是一种在不同组件之间传递数据的机制。如果你想从子活动(如 SecondActivity
)向主活动(如 MainActivity
)传递数据,可以使用 startActivityForResult
方法和 onActivityResult
回调。
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 123;
@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, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
if (data != null) {
String result = data.getStringExtra("result_key");
// 处理从SecondActivity返回的数据
Log.d("MainActivity", "Result Data: " + result);
}
}
}
}
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_second);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent resultIntent = new Intent();
resultIntent.putExtra("result_key", "这是来自SecondActivity的数据");
setResult(RESULT_OK, resultIntent);
finish();
}
});
}
}
startActivityForResult
启动 SecondActivity
。Intent
,将数据放入其中,并调用 setResult
方法设置结果码和数据,然后调用 finish
方法结束当前活动。onActivityResult
方法来接收从 SecondActivity
返回的数据。startActivityForResult
已被 registerForActivityResult
API 替代,后者提供了更好的生命周期管理。AndroidManifest.xml
中正确声明所有活动。SecondActivity
中正确设置了 setResult
并调用了 finish
。requestCode
是否匹配,并确保 SecondActivity
正确设置了结果。通过这种方式,你可以有效地在安卓活动之间传递数据,并处理返回的结果。
领取专属 10元无门槛券
手把手带您无忧上云