什么是Intent(意图)
1、Intent是一种运行时绑定(runtime bingding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种
请求或者意愿,Android会根据意愿的内容选择适当的组件来请求。
2、在这些组件之间的通讯中,主要是由Intent协助完成的。
Intent负责对应用中一次操作的动作,动作设计数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,
并完成组件的调用。
3、因此,Intent在这里起这一个媒体中介的作用,专门提供组件相互调用的相关信息,实现调用者与被调用者之间的解耦。
例如:在一个联系人维护的应用中,当我在一个联系人列表屏幕(建设对应的Activity为listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息
屏幕(折射对应的Activity为detailactivity)。
4、为了实现这个目的,listActivity需要构造一个Intent,这个Intent用于告诉系统,我们要做“查看”动作。
此动作对应的查看对象“某某联系人”,然后调用startActivity(Intent intent),将构造的Intent传入,系统会根据此Intent中
描述,到ManiFest中找到满足此Intent要求的Acitvity,系统会调用找到Activity,即为detailActivity,最终传入Intent
detailActivity则会根据此Intent中的描述,执行响应的操作。
package com.example.app.intentchuandi; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //加载视图 button = (Button)this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,IntentClas.class); intent.putExtra("hjk","张三"); intent.putExtra("age","23"); intent.putExtra("address","南京"); //启动意图 startActivity(intent); } }); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout); Intent intent = getIntent(); int age = intent.getIntExtra("age",0); String hjk = intent.getStringExtra("hjk"); String address = intent.getStringExtra("address"); textView = (TextView)this.findViewById(R.id.sf); textView.setText("age---->>"+age+"\n"+"name--->>"+hjk+"address--->>"+address); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了