Android Intent参数传递
Android Intent参数传递 Android参数传递有两种方式, 1.是从一个Activity传递参数到第二个Activity并在第二个Activity获取数据 2.是从第二个Activity关闭后将参数传递到第一个Activity (1)第一种: public class FirstDemoActivity extends Activity { private Button button3; private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.first); button3=(Button) this.findViewById(R.id.button3); editText=(EditText) this.findViewById(R.id.editText1); button3.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub String content=editText.getText().toString(); Intent intent=new Intent(FirstDemoActivity.this,SecondDemoActivity.class); //可以把要传递的参数放到一个bundle里传递过去,bundle可以看做一个特殊的map. Bundle bundle=new Bundle(); bundle.putString("result", "第一个activity的内容"); bundle.putString("content",content); intent.putExtras(bundle); //也可以用这种方式传递. //intent.putExtra("result", "第一个activity的内容"); startActivity(intent); } }); } } 接收参数方法 public class SecondDemoActivity extends Activity { private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.second); textView=(TextView) this.findViewById(R.id.textView3); Intent intent=getIntent(); String result=intent.getStringExtra("result"); String content=intent.getStringExtra("content"); textView.setText(result+" : "+content); } } (2)第二种 第二种方式需要在跳转到第二个Activity的时候指定requestCode,同时第二个Activity关闭之前也需要指定resultCode,这样我们在获取返回值的时候才能够准确判断是否为我们需要的数据 1.跳转到第二个Activity并指定resultCode private OnClickListener btnAdd_click = new OnClickListener() { public void onClick(View arg0) { Intent intent = new Intent(); intent.setClass(getApplicationContext(), LifingAddActivity.class); // startActivity(intent); /* * 如果希望启动另一个Activity,并且希望有返回值,则需要使用startActivityForResult这个方法, * 而不是startActivity方法 * 第一个参数是Intent对象,第二个参数是一个requestCode值,如果有多个按钮都要启动Activity * ,则requestCode标志着每个按钮所启动的Activity */ startActivityForResult(intent, 1000); // 设置切换动画,从右边进入,左边退出 overridePendingTransition(R.anim.in_from_right, R.anim.out_from_left); } }; 2.在第一个Activity重写onActivityResult方法 /** * 弹出的Activity关闭后所触发的事件 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); // 根据requestCode判断是否为当前Activity打开的另一个Activity,根据resultCode判断具体执行什么操作关闭的第二个Activity if (requestCode == 1000 && resultCode == 1) { new Thread() { public void run() { String result=intent.getStringExtra("result"); } }.start(); } } 3.在第二个Activity关闭前指定resultCode和data /** * 保存按钮事件 */ private OnClickListener btnSave_click = new OnClickListener() { @Override public void onClick(View v) { if (CheckInput()) { new Thread() { public void run() { Bundle data = new Bundle(); data.putString("result", "success"); Intent intent=getIntent(); intent.putExtras(data); setResult(1, intent); finish(); // finish当前activity overridePendingTransition(R.anim.in_from_left, R.anim.out_from_right); } }.start(); } } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗