Intent(意图)是一种重要的消息传递对象,用于在不同组件(如活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)等)之间进行通信和交互。
Intent 主要由以下几个部分组成:
ACTION_VIEW
、ACTION_SEND
等。CATEGORY_LAUNCHER
、CATEGORY_DEFAULT
等。putExtra()
方法添加键值对。用于在应用内部启动组件(如Activity、Service、BroadcastReceiver)。显式Intent会指定要启动的组件的类名,例如:
button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建一个从 MainActivity 到 SecondActivity 的 Intent Intent intent = new Intent(MainActivity.this, SecondActivity.class); // 启动 SecondActivity startActivity(intent); } });
创建一个 Intent
对象,用于启动 SecondActivity
。Intent
的第一个参数是当前的 Context
(即 MainActivity.this
),第二个参数是要启动的目标 Activity
类(即 SecondActivity.class
)。
activity
在标签中添加下面代码:
Button button5 = findViewById(R.id.button5); button5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建一个隐式 Intent,指定动作为 com.example.menutest_716.SecondActivity Intent intent = new Intent("com.example.menutest_716.SecondActivity"); // 添加自定义分类 com.example.menutest_716.MY_CATEGORY intent.addCategory("com.example.menutest_716.MY_CATEGORY"); // 启动符合条件的 Activity startActivity(intent); } });
button6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建一个新的 Intent,动作为 ACTION_VIEW Intent intent = new Intent(Intent.ACTION_VIEW); // 设置 Intent 的数据为指定的 URI,这里是打开百度网站的示例 intent.setData(Uri.parse("http://www.baidu.com")); // 启动能够处理此 Intent 的 Activity startActivity(intent); } });
button8.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建一个拨号的 Intent Intent intent = new Intent(Intent.ACTION_DIAL); // 设置 Intent 的数据为要拨打的电话号码 intent.setData(Uri.parse("tel:10086")); // 启动该 Intent,跳转到系统的拨号界面 startActivity(intent); } });
有两个活动:MainActivity
和 SecondActivity
,要从 MainActivity
向 SecondActivity
传递数据。
在 MainActivity
中:
Intent
对象,并使用 putExtra
方法添加要传递的数据。startActivity
方法启动 SecondActivity
。 Button button3 = findViewById(R.id.button3); button3.setOnClickListener(new View.OnClickListener() { @Override public 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();
如有错误烦请指正
感谢您的阅读
上一篇:均值滤波算法及实现
下一篇:目标检测IOU和NMS详解