使用Intent来启动Activity并传递参数
1.背景:
要创建并显示一个Activity,可以调用startActivity,并传递给它一个Intent,如下面的代码所示:
startActivity(Intent myIntent);
可以构造Intent来显示地指定要打开的Activity类,或者包含一个目标Activity必须执行的动作。在后一种情况中,运行时将会使用一个称为“Intent解析(Intent resolution)”的过程来动态选择Activity。
还可以通过向Intent添加extra来向目标Activity发送额外的数据。
2.实例
利用startActivity创建并显示一个Activity,并向其传递数据。
1》程序启动时:
其布局代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.demo.parameterdemo.MainActivity" ><EditTextandroid:id="@+id/info_et"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="在这里输入要传送的内容..." /><Button android:id="@+id/startAnotherActivity"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="开始传递"/></LinearLayout>
其中“开始传递”的事件处理代码如下:
// 启动子Activity,并从中获取返回信息private void startAnotherActivity() {Intent startIntent = new Intent(getApplicationContext(),AnotherActivity.class);startIntent.putExtra(AnotherActivity.RETURN_INFO, infoEditText.getText().toString());/** //也可以使用这种方式 * Bundle argBundle=new Bundle();* argBundle.putString(AnotherActivity.RETURN_INFO,* infoEditText.getText().toString()); * startIntent.putExtras(argBundle);*/startActivity(startIntent);}
2》输入数据,如下图所示
3》点击“开始传递”,如下图所示
可以看到已经成功,那么是如何接收到该数据呢?
private void getINFO() {// 获取传递过来的信息。String infoString = getIntent().getStringExtra(RETURN_INFO);subTextView.setText(infoString);}
3.详细代码如下:
1》MainActivity.java
package com.demo.parameterdemo;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;public class MainActivity extends Activity {// 声明控件private EditText infoEditText;private Button startAnotherButton;// 请求码private static final int ACTIVITY_REQUEST_CODE = 1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}// 初始化private void init() {// 得到相应控件的引用infoEditText = (EditText) findViewById(R.id.info_et);startAnotherButton = (Button) findViewById(R.id.startAnotherActivity);// 注册事件startAnotherButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubstartAnotherActivity();}});}// 启动子Activity,并从中获取返回信息private void startAnotherActivity() {Intent startIntent = new Intent(getApplicationContext(),AnotherActivity.class);startIntent.putExtra(AnotherActivity.RETURN_INFO, infoEditText.getText().toString());/** //也可以使用这种方式 * Bundle argBundle=new Bundle();* argBundle.putString(AnotherActivity.RETURN_INFO,* infoEditText.getText().toString()); * startIntent.putExtras(argBundle);*/startActivity(startIntent);}}
2》SubActivity.java
package com.demo.parameterdemo;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;public class AnotherActivity extends Activity {// 声明控件private TextView subTextView;// 用于唯一标识要返回的信息// 应该尽量的长,最好加上所在类的全名,即:包名+类名+参数名public static final String RETURN_INFO = "com.demo.parameterdemo.SubActivity.info";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_another);init();getINFO();}// 初始化private void init() {// 得到相应控件引用subTextView = (TextView) findViewById(R.id.subTextView);}private void getINFO() {// 获取传递过来的信息。String infoString = getIntent().getStringExtra(RETURN_INFO);subTextView.setText(infoString);}}
使用Intent来启动Activity并传递参数相关推荐
- Docker启动SpringBoot项目传递参数
SpringBoot项目 我们需要在启动项目时传递参数 # 方式1 java -Dxxx=xx zzz=zzz xxx.jar # 方式2 java xxx.jar --xxx=xxx --zzz=z ...
- Android编程权威指南学习:Activity之间传递参数
2019独角兽企业重金招聘Python工程师标准>>> 在Android编程中,经常会有多个Activity之间.同Activity的旋转都要进行调用,数据传递的现象.如何理解Act ...
- Android Studio实现Activity之间传递参数
目录 一.传递基本类型数据 (一)编辑MainActivity (二)编辑InfoActivity (三)布局 (四)效果 二.传递对象 (一)创建类 (二)编辑MainActivity (三)编辑I ...
- Activity之间传递参数
发送 intent.setClass(Bmi.this, Report.class); Bundle bundle = new Bundle(); bundle.putString("KEY ...
- Android: 启动另外的APP及传递参数(转)
转载自:http://blog.csdn.net/iefreer/article/details/8812585 有时候需要从一个APP中启动另外一个APP,比如Twitter/微信等. 如果你不知道 ...
- android 中文参数,(原)Android: 启动另外的APP及传递参数
有时候需要从一个APP中启动另外一个APP,比如Twitter/微信等. 如果你不知道那个APP的Activity,但是知道包名(package name),那么可以使用如下的方法: Intent L ...
- android activity之间跳转和数据传递参数,Activity跳转(有返回数据跳转)以及传递参数和回传参数...
使用Bundle在Activity之间传递数据 Bundle类是一个key-value对,是一个final类 两个Activity之间通信可以用Bundle类实现步骤: 新建一个Bundle类 Bun ...
- Android--intent-filter 过滤规则的匹配 (Activity通过Uri传递参数)
当我们使用 Intent intent = new Intent(Intent.ACTION_VIEW); startActivity(intent); 这种方式启动Activity的时候, 叫做隐式 ...
- 父activity启动子activity并传递数据
1. Intent component : activity,service,broadcast receiver以及content provider component 与操作系统 通信的一种媒介工 ...
最新文章
- shell脚本_查找无效网址
- R语言dir函数获取目录中文件或者文件夹名称实战
- 一位软件工程师的6年总结(转载)
- 面向.Net程序员的前端优化
- 认识学习网络布线与数制转换
- odoo10 ORM操作
- sqlserver安装教程
- JBoss BPM Travel Agency的微服务迁移故事
- 深度解析LSTM神经网络的设计原理
- Permission denied (publickey).
- 数据结构C语言实现动态顺序表
- android 安装p12证书,怎么使用P12证书的Android
- Web Proxy Auto-Discovery Service
- csgo星空天空代码_csgo天空背景怎么改_csgo天空背景更改方法
- deepin回收站无法清空
- 烟沙浮生 | 曾几何时,还是游吟长安的醉客
- 【相机硬触发】大恒相机硬触发说明文档
- vue + element-ui 实现分页功能
- MySQL的数据库引擎介绍
- mac系统计算机名,苹果电脑系统各版本名字该怎么念?