酒店网站建设案例,购物网站建设论文答辩,网络营销是不是网络推广,一个人可以备案几个网站概述
在Android中#xff0c;Intent是各个组件之间信息通信的桥梁#xff0c;它用于Android各组件的通信。
Intent 的组成部分
一、显式 Intent
第一种方式 Intent intent new Intent(this, ActFinishActivity.class);startActivity(intent);第二种方式 Intent intent …概述
在Android中Intent是各个组件之间信息通信的桥梁它用于Android各组件的通信。
Intent 的组成部分
一、显式 Intent
第一种方式 Intent intent new Intent(this, ActFinishActivity.class);startActivity(intent);第二种方式 Intent intent new Intent();intent.setClass(this, ActFinishActivity.class);startActivity(intent);第三种方式 Intent intent new Intent();ComponentName componentName new ComponentName(this, ActFinishActivity.class);intent.setComponent(componentName);startActivity(intent);可以看出第一、二种比较简单且相似但是这两种方式都需要获取到要跳转的类。如果要跳到其他应用就不行了用 ComponentName 这种方式可以解决如下 ComponentName componentName new ComponentName(com.example.study_android, com.example.study_android.ActFinishActivity);
二、隐式 Intent
隐式 Intent 没有明确指定要跳转的目标活动只给出一个动作字符串让系统自动匹配属于模糊匹配。
常见系统动作的取值说明 动作名既可以通过 setAction 方法指定也可以通过构造函数 Intent(String action) 直接生成意图对象。跳转到拨号系统应用 private void handleNavHidden() {String phoneNo 12345;Intent intent new Intent();intent.setAction(Intent.ACTION_DIAL);Uri uri Uri.parse(tel: phoneNo);intent.setData(uri);startActivity(intent);}跳转到另一个APP private void handleNavMy() {Intent intent new Intent();intent.setAction(android.intent.action.MYAPP);intent.addCategory(Intent.CATEGORY_DEFAULT);startActivity(intent);}在另一个APP的主Activity中添加以下代码 intent-filteraction android:nameandroid.intent.action.MYAPP/category android:nameandroid.intent.category.DEFAULT //intent-filter三、向下一个Activity发送数据
Intent 使用 Bundle 对象存放待传递的数据信息。Bundle 对象操作各类型数据的读写方法说明见下表 通过 Bundle 传递 private void handleNextData() {Intent intent new Intent(this, ActFinishActivity.class);Bundle bundle new Bundle();long currentTimeMillis System.currentTimeMillis();bundle.putString(request_time, Long.toString(currentTimeMillis));bundle.putString(request_content, hello,world);intent.putExtras(bundle);startActivity(intent);}在跳转后的页面中接收 Bundle Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_act_finish);tv_descfindViewById(R.id.tv_desc);Bundle bundle getIntent().getExtras();String request_time bundle.getString(request_time);String request_content bundle.getString(request_content);String desc String.format(消息是%s,\n时间是%s, request_content, request_time);tv_desc.setText(desc);}也可以不通过Bundle直接传单个数据 intent.putExtra(name,张三);接收单个数据 String name getIntent().getStringExtra(name);四、向上一个Activity发送数据
步骤
当前页面通过 registerForActivityResult 注册回调 private ActivityResultLauncherIntent register;register registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result - {if (result ! null) {Intent intent result.getData();if (intent ! null result.getResultCode() Activity.RESULT_OK) {Bundle bundle intent.getExtras();String response_time bundle.getString(response_time);String response_content bundle.getString(response_content);String desc String.format(返回的消息是%s\n,时间%s, response_content, response_time);tv_res.setText(desc);}}});当前页面通过 register.launch 发起跳转 private void handleDataRes() {Intent intent new Intent(this, ActFinishActivity.class);Bundle bundle new Bundle();long currentTimeMillis System.currentTimeMillis();bundle.putString(request_time, Long.toString(currentTimeMillis));bundle.putString(request_content, hello,world);bundle.putString(name, 张三);intent.putExtras(bundle);register.launch(intent);}在下个页面调用 setResult 设置数据并通过 finish结束页面 public void onClick(View view) {Intent intent new Intent();Bundle bundle new Bundle();long currentTimeMillis System.currentTimeMillis();bundle.putString(response_time, Long.toString(currentTimeMillis));bundle.putString(response_content, 你好啊);intent.putExtras(bundle);// 携带意图返回上一个页面RESULT_OK 表示处理成功setResult(Activity.RESULT_OK, intent);// 结束当前活动页finish();}案例代码