Android Intent详解与使用示例

需积分: 15 1 下载量 4 浏览量 更新于2024-10-20 收藏 6KB TXT 举报
"这篇资料详细介绍了Android中Intent的使用方法,包括启动新Activity、传递数据、接收结果等关键操作。" 在Android应用开发中,Intent是一个至关重要的组件,它用于在应用程序的不同组件之间进行通信,尤其是Activity之间的跳转和数据交换。下面是Intent的基本用法: 1. 启动新Activity 当你需要从一个Activity(如MainActivity)启动另一个Activity(如Activity2)时,可以创建一个新的Intent对象,并指定源Activity和目标Activity。这可以通过以下代码完成: ```java Intent intent = new Intent(Activity.Main.this, Activity2.class); startActivity(intent); ``` 这行代码会启动Activity2,并将控制权从MainActivity转移到Activity2。 2. 传递数据 若要在启动新Activity时传递数据,可以使用Intent的`putExtra()`方法。首先,创建一个Bundle对象,然后将数据放入Bundle,最后将Bundle附加到Intent中: ```java Bundle bundle = new Bundle(); bundle.putString("name", "ThisisfromMainActivity!"); intent.putExtras(bundle); // 或者使用intent.putExtra("key", "value")传递单个数据 startActivity(intent); ``` 在目标Activity(这里是Activity2)中,可以通过`getIntent().getExtras()`获取传入的数据: ```java Bundle bundle = getIntent().getExtras(); String name = bundle.getString("name"); ``` 3. 接收返回结果 如果需要从被启动的Activity(Activity2)返回结果到启动它的Activity(MainActivity),可以使用`startActivityForResult()`方法启动Activity2,并在Activity2中通过`setResult()`设置返回结果。在MainActivity中重写`onActivityResult()`来处理返回的数据: ```java // Activity2中设置返回结果 Intent intent = getIntent(); Bundle bundle2 = new Bundle(); bundle2.putString("name", "ThisisfromShowMsg!"); intent.putExtras(bundle2); setResult(RESULT_OK, intent); // MainActivity中接收结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE) { if (resultCode == RESULT_CANCELED) { setTitle("cancle"); } else if (resultCode == RESULT_OK) { String temp = data.getStringExtra("name"); // 处理返回的数据 } } } ``` 其中,`REQUEST_CODE`是你自定义的一个整数值,用于识别不同的启动请求,`RESULT_OK`表示Activity2正常结束,而`RESULT_CANCELED`表示被取消。 Intent的使用还包括显式Intent和隐式Intent,显式Intent是明确指定目标组件的,而隐式Intent则是通过指定动作(Action)、数据(Data)、类别(Category)等信息,让系统找到合适的组件来处理。此外,Intent还可以用于启动Service,BroadcastReceiver等其他组件,实现更复杂的跨组件通信。 理解并熟练运用Intent是Android开发的基础,它能帮助你构建流畅的用户交互和高效的应用架构。