Intent的使用和Activity中的数据传递
来源:互联网 发布:js 获得div的高度 编辑:程序博客网 时间:2024/05/16 09:21
Intent
寻找目标组件的方式有两种:显式意图、隐式意图
1、显式意图:
显示意图启动Activity:
//创建Intent对象,启动Activity02 Intent intent = new Intent(this, Main2Activity.class); //开启Activity startActivity(intent);
通过Intent的构造方法来创建Intent对象。构造方法中接受两个参数,第一个参数Content要求提供一个启动Activity的上下文,第二个参数Class则是指定要启动的目标Activity。
2、隐式意图:
没有明确指定组件名的Intent称为隐式意图。
在AndroidManifest.xml中配置:
<activity android:name=".MainActivity"> <intent-filter> <action android:name="xxxx" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
使用隐式意图开启Activity
Intent intent = new Intent(); //开启Activity intent.setAction("xxxx"); startActivity(intent);
上述代码中,标签指明了当前Activity可以响应的动作”xxxx”,而则包含了一些类别信息,只有和中的内容同时匹配时,Activity才会被开启。
Intent指定了setAction(“xxxx”);这个动作,但没有指定,而配置的是一种默认的,在调用startActivity()方法时,会自动将这个category添加到Intent中。
Activity中的数据传递:
activity_main.xml:
<EditText android:id="@+id/et_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" android:textSize="14dp" />
Activity01.java:
//获取控件对象EditText et_password = (EditText) findViewById(R.id.et_password);......//创建Intent对象,启动Activity02Intent intent = new Intent(this, Activity02.class);//将数据存入Intent对象intent.putExtra("password", et_password.getText().toString().trim());startActivity(intent);
使用Intent传递数据只需要调用putExtra()方法,将想要存储的数据存在Intent中。putExtra()方法中第一个参数接收的是key,第二个参数接收的是value。
activity_main02.xml:
<TextView android:id="@+id/tv_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="10dp" android:textSize="20dp" />
Activity02.java:
//获取Intent对象Intent intent=getIntent();String password = intent.getStringExtra("password");//获取控件对象TextView tv_password =(TextView)findViewById(R.id.tv_password);//将文本框的内容设置为获取的Intent的内容 tv_password.setText(password);
getIntent()方法获取到Intent对象,然后通过该对象的getStringExtra()方法获取相应的内容。getStringExtra(String str)方法传入的参数必须是Activity01中intent.putExtra()方法中传入的key,否则会返回null。
下面我们就演示一个案例:
用户注册案例:
基本布局如下:
activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/regist_username" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="22dp" android:orientation="horizontal" > <TextView android:layout_width="80dp" android:layout_height="wrap_content" android:gravity="right" android:paddingRight="5dp" android:text="用户名 :" /> <EditText android:id="@+id/et_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入您的用户名" android:textSize="14dp" /> </LinearLayout> <LinearLayout android:id="@+id/regist_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/regist_username" android:layout_centerHorizontal="true" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="5dp" android:orientation="horizontal" > <TextView android:layout_width="80dp" android:layout_height="wrap_content" android:gravity="right" android:paddingRight="5dp" android:text="密 码 :" /> <EditText android:id="@+id/et_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入您的密码" android:inputType="textPassword" android:textSize="14dp" /> </LinearLayout> <RadioGroup android:id="@+id/radioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/regist_password" android:layout_marginLeft="30dp" android:contentDescription="性别" android:orientation="horizontal" > <RadioButton android:id="@+id/radioMale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="男" > </RadioButton> <RadioButton android:id="@+id/radioFemale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女" /> </RadioGroup> <Button android:id="@+id/btn_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/radioGroup" android:layout_centerHorizontal="true" android:layout_marginTop="24dp" android:text="提交用户信息" /></RelativeLayout>
布局如下图:
activity_main2.xml:
<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"> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="10dp" android:textSize="20dp" /> <TextView android:id="@+id/tv_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="10dp" android:textSize="20dp" /> <TextView android:id="@+id/tv_sex" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="10dp" android:textSize="20dp" /></LinearLayout>
MainActivity:
package com.example.thinkpad.myapplication;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.RadioButton;public class MainActivity extends AppCompatActivity { private Button btn_send; private EditText et_name; private RadioButton manRadio; private RadioButton womanRadio; private EditText et_password; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_name = (EditText) findViewById(R.id.et_name); et_password = (EditText) findViewById(R.id.et_password); btn_send = (Button) findViewById(R.id.btn_send); manRadio = (RadioButton) findViewById(R.id.radioMale); womanRadio = (RadioButton) findViewById(R.id.radioFemale); //点击发送按钮进行数据传递 btn_send.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { passDate(); } }); } //传递数据 public void passDate() { //创建Intent对象,启动Activity02 Intent intent = new Intent(this, Main2Activity.class); //将数据存入Intent对象 intent.putExtra("name", et_name.getText().toString().trim()); intent.putExtra("password", et_password.getText().toString().trim()); String str = ""; if (manRadio.isChecked()) { str = "男"; } else if (womanRadio.isChecked()) { str = "女"; } intent.putExtra("sex", str); startActivity(intent); }}
Main2Activity:
package com.example.thinkpad.myapplication;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class Main2Activity extends AppCompatActivity { private TextView tv_name; private TextView tv_password; private TextView tv_sex; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Intent intent = getIntent(); String name = intent.getStringExtra("name"); String password = intent.getStringExtra("password"); String sex = intent.getStringExtra("sex"); tv_name = (TextView) findViewById(R.id.tv_name); tv_password = (TextView) findViewById(R.id.tv_password); tv_sex = (TextView) findViewById(R.id.tv_sex); tv_name.setText("用户名:" + name); tv_password.setText("密 码:" + password); tv_sex.setText("性 别:" + sex); }}
配置清单文件:AndroidManifest.xml:
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="填写用户信息"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Main2Activity" android:label="展示用户信息"></activity> </application>
效果图:
- Intent的使用和Activity中的数据传递
- 使用 Intent 启动 Activity和Activity之间的数据传递
- Android中Activity之间的数据传递和Intent使用
- Android中Activity之间的数据传递和Intent使用
- Android 使用Intent实现Activity跳转和数据传递
- 使用Intent和Bundle的数据传递
- 使用Intent实现activity之间的数据传递
- 使用Intent在activity之间传递数据
- 使用Intent启动Activity传递数据
- intent和activity之间传递数据
- Activity之间的数据传递: Intent
- Android -- 两个activity界面的切换, 显示Intent 和 隐式Intent,putExtra传递数据
- Intent启动活动以及Intent传递数据&activity的生命周期
- activity之间使用intent传递数据时,获取不到数据
- 使用Intent实现活动间的跳转和数据传递
- Activity的注册流程、Menu菜单、使用Intent在Activity间切换以及传递数据、Activity的声明周期
- 通过intent和bundle来进行Activity和Fragment的数据传递
- 使用Intent Bundle在Activity间传递数据
- C语言-数据结构-线性表检索和二分检索
- 配置你的Editor
- ideal手动添加jar包
- cnpm 安装 node-sass & sass-loader, 仍旧无法编译的原因
- 基于vue2全家桶实现的,仿移动端QQ
- Intent的使用和Activity中的数据传递
- 离散题目15
- 关于获得ViewPager的item的View为null问题
- Oracle将数据导出到CSV文件
- python2 encode和decode函数说明
- Vue.js 插件开发详解
- 数据库隔离级别测试(sqlserver2008)
- oj 1901: 简单密码破解
- CXF上利用拦截器做登录校验