在Android应用开发中,Activity是构成应用程序的基本单元,它代表用户可以交互的屏幕。当我们需要在不同的Activity之间传递数据时,通常会用到Intent对象。本教程将通过一个简单的"摘桃子游戏"实例,详细讲解如何在Android的多个Activity间进行数据回传。
我们创建两个Activity:MainActivity和PeachActivity。MainActivity作为游戏主界面,展示一棵桃树(tree_bg.png、tree.png),而PeachActivity用于展示用户摘到的桃子(peach_pic.png)。
在MainActivity中,用户点击"摘桃子"按钮(btn_peach.png),我们需要启动PeachActivity并传递一些数据,如桃子的ID或数量。这可以通过Intent的putExtra()方法实现:
```java
Intent intent = new Intent(MainActivity.this, PeachActivity.class);
intent.putExtra("peach_id", peachId); // 假设peachId是桃子的唯一标识
startActivity(intent);
```
在PeachActivity中,我们通过getIntent().getStringExtra()或getIntent().getIntExtra()等方法获取传递的数据:
```java
Intent intent = getIntent();
int peachId = intent.getIntExtra("peach_id", -1); // -1为默认值,表示没有传递该数据
```
为了实现数据回传,即从PeachActivity返回结果给MainActivity,我们可以使用startActivityForResult()方法启动PeachActivity,并在PeachActivity中调用setResult()来设置返回结果:
```java
// 在PeachActivity中处理完桃子后
Intent resultIntent = new Intent();
resultIntent.putExtra("picked_peaches", pickedCount); // pickedCount为摘到的桃子数量
setResult(RESULT_OK, resultIntent); // 结果码RESULT_OK表示操作成功
finish(); // 关闭PeachActivity
```
然后,在MainActivity的onActivityResult()方法中接收返回的结果:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQ_CODE_PICK_PEAR && resultCode == RESULT_OK) { // REQ_CODE_PICK_PEAR是自定义请求码
int pickedCount = data.getIntExtra("picked_peaches", 0);
// 更新MainActivity中的桃子数量或者做其他处理
}
}
```
在这个“摘桃子游戏”实例中,我们学习了如何在Android的不同Activity之间传递和回传数据,这对于构建复杂的应用程序至关重要。理解并熟练掌握这一技术,可以帮助我们更高效地组织和管理应用程序的流程。同时,我们还了解了如何利用资源文件(如图片bg.png、monkey.png等)来增强游戏的视觉效果,提供更好的用户体验。在实际开发中,根据需求,还可以扩展更多的功能,如动画效果、声音效果等,使游戏更具吸引力。
1