四川成都网站优化,东道设计公司怎么样,武威市凉州区建设局网站,可视化网站设计工具文章目录 使用Intent在活动中穿梭组成显式Intent隐式Intent显式与隐式区别作用 活动间传递数据向下一个活动传递数据返回数据给上一个活动 使用Intent在活动中穿梭
Intent#xff08;意图#xff09;是一种重要的消息传递对象#xff0c;用于在不同组件#xff08;如活动意图是一种重要的消息传递对象用于在不同组件如活动Activity、服务Service、广播接收器BroadcastReceiver等之间进行通信和交互。
组成
Intent 主要由以下几个部分组成
Action表示要执行的操作比如 ACTION_VIEW、ACTION_SEND 等。Data表示要操作的数据通常是一个 URI。Category表示 Intent 的类型比如 CATEGORY_LAUNCHER、CATEGORY_DEFAULT 等。Extras表示附加的信息可以通过 putExtra() 方法添加键值对。
显式Intent 用于在应用内部启动组件如Activity、Service、BroadcastReceiver。显式Intent会指定要启动的组件的类名例如 button1.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 创建一个从 MainActivity 到 SecondActivity 的 IntentIntent intent new Intent(MainActivity.this, SecondActivity.class);// 启动 SecondActivitystartActivity(intent);}});创建一个 Intent 对象用于启动 SecondActivity。Intent 的第一个参数是当前的 Context即 MainActivity.this第二个参数是要启动的目标 Activity 类即 SecondActivity.class。
隐式Intent
用于在不指定组件名称的情况下启动组件而是通过指定动作Action、数据Data和类型Type等信息让系统去匹配合适的组件。
启动activity
在标签中添加下面代码
activityandroid:name.SecondActivityandroid:exportedtrueandroid:themestyle/Theme.AppCompat.DayNight.DialogWhenLargeintent-filter!-- 指定动作为 com.example.menutest_716.SecondActivity --action android:namecom.example.menutest_716.SecondActivity /!-- 添加默认分类 --category android:nameandroid.intent.category.DEFAULT /!-- 添加自定义分类 com.example.menutest_716.MY_CATEGORY --category android:namecom.example.menutest_716.MY_CATEGORY //intent-filter
/activityButton button5 findViewById(R.id.button5);
button5.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 创建一个隐式 Intent指定动作为 com.example.menutest_716.SecondActivityIntent intent new Intent(com.example.menutest_716.SecondActivity);// 添加自定义分类 com.example.menutest_716.MY_CATEGORYintent.addCategory(com.example.menutest_716.MY_CATEGORY);// 启动符合条件的 ActivitystartActivity(intent);}
});打开网页
button6.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 创建一个新的 Intent动作为 ACTION_VIEWIntent intent new Intent(Intent.ACTION_VIEW);// 设置 Intent 的数据为指定的 URI这里是打开百度网站的示例intent.setData(Uri.parse(http://www.baidu.com));// 启动能够处理此 Intent 的 ActivitystartActivity(intent);}
});拨打电话
button8.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 创建一个拨号的 IntentIntent intent new Intent(Intent.ACTION_DIAL);// 设置 Intent 的数据为要拨打的电话号码intent.setData(Uri.parse(tel:10086));// 启动该 Intent跳转到系统的拨号界面startActivity(intent);}
});显式与隐式区别
目的显式Intent用于精确指定要启动的组件通常在应用内部使用隐式Intent用于请求系统启动能够处理指定动作或数据类型的任何组件。使用方式显式Intent直接指定组件类名而隐式Intent通过设置动作、数据等信息间接指定要启动的组件系统会根据匹配规则找到合适的组件处理请求。
作用
组件通信Intent 允许应用程序的不同组件如活动、服务、广播接收器之间进行通信。通过发送Intent一个组件可以请求另一个组件执行特定的操作或返回结果。启动活动当你需要从一个活动跳转到另一个活动时可以使用Intent来启动目标活动。这使得应用程序的导航更加灵活和动态。启动服务服务是后台运行的组件通常用于执行长时间运行的操作如下载文件或播放音乐。通过Intent你可以启动或绑定到一个服务并与之交互。发送广播广播是一种消息传递机制允许应用程序向系统或应用程序的其他部分发送消息。Intent 可以用于发送和接收广播从而实现应用程序之间的通信。数据传输Intent 可以携带数据如字符串、URI、文件等这使得数据可以在不同的组件之间传递。这对于实现复杂的交互和数据共享非常有用。隐式Intent隐式Intent不指定具体的组件而是通过定义一个操作action、数据类型data和类别category来请求系统执行相应的操作。这使得应用程序可以更灵活地与其他应用程序或系统服务交互。显式Intent显式Intent直接指向特定的组件如某个活动或服务。这使得开发者可以精确控制应用程序的行为和交互。
活动间传递数据
向下一个活动传递数据
有两个活动MainActivity 和 SecondActivity要从 MainActivity 向 SecondActivity 传递数据。
在 MainActivity 中
创建一个 Intent 对象并使用 putExtra 方法添加要传递的数据。使用 startActivity 方法启动 SecondActivity。 Button button3 findViewById(R.id.button3);button3.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {String data 祝你开心永远;Intent intent new Intent(MainActivity.this, SecondActivity.class);intent.putExtra(extra_data,data);startActivity(intent);}});在 SecondActivity 中
在 onCreate 方法中获取传递过来的数据。
Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);// 获取传递的数据Intent intent getIntent();String value intent.getStringExtra(key);
}返回数据给上一个活动
在 Android 中如果我们需要从一个活动返回数据给上一个活动可以使用 startActivityForResult 方法启动目标活动并在目标活动中设置结果数据。
在 MainActivity 中
使用 startActivityForResult 方法启动 SecondActivity。重写 onActivityResult 方法来接收返回的数据。
// 启动 SecondActivity 并请求返回结果
Intent intent new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);// 重写 onActivityResult 方法来接收返回的数据
Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode 1 resultCode RESULT_OK) {// 从返回的 Intent 中获取数据String result data.getStringExtra(result_key);// 处理返回的数据}
}在 SecondActivity 中
创建一个 Intent 对象并使用 putExtra 方法添加要返回的数据。使用 setResult 方法设置结果并传入包含数据的 Intent。调用 finish 方法关闭当前活动。
// 创建一个 Intent 对象并添加要返回的数据
Intent returnIntent new Intent();
returnIntent.putExtra(result_key, result_value);// 设置结果并传入包含数据的 Intent
setResult(RESULT_OK, returnIntent);// 关闭当前活动
finish();如有错误烦请指正 感谢您的阅读