1、Activity之间使用 Intent 的 putExtra() 方法传递数据。
2、putExtra() 方法包含两个参数,第一个参数(name)表示传递的数据名称,第二个参数(value)表示传递的数据信息。
3、如果想要获取该数据,可以通过 getStringExtra() / getIntExtra() / getBooleanExtra() 方法来实现。(具体使用哪一种方法取决于传递的数据类型)
传递数据:
Intent intent = new Intent(this, Activity2.class);
intent.putExtra("data", "Hello Activity2");
startActivity(intent);
获取数据:
Intent intent = getIntent();
String data = intent.getStringExtra("data");
【例子:将用户注册信息显示到另一个页面】
(1)用户注册页面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="150dp">
<TextView
android:text="账号:"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/et_account"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:text="密码:"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<Button
android:id="@+id/btn_send"
android:text="注册"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
</LinearLayout>
(2)信息显示页面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ShowActivity">
<TextView
android:id="@+id/tv_account"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:layout_gravity="center"/>
<TextView
android:id="@+id/tv_password"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
</LinearLayout>
(3)数据传递代码
public class MainActivity extends AppCompatActivity {
private EditText et_account, et_password;
private Button btn_send;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取界面控件
et_account = findViewById(R.id.et_account);
et_password = findViewById(R.id.et_password);
btn_send = findViewById(R.id.btn_send);
// 给按钮设置点击事件
btn_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
passData();
}
});
}
// 通过这个方法实现数据的传递
private void passData(){
// 创建意图对象
Intent intent = new Intent(this, ShowActivity.class);
// 把数据存入intent
intent.putExtra("account", et_account.getText().toString().trim());
intent.putExtra("password", et_password.getText().toString().trim());
// 开启意图
startActivity(intent);
}
}
(4)获取数据代码
public class ShowActivity extends AppCompatActivity {
private TextView tv_account, tv_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
// 获取开启此页面的意图对象
Intent intent = getIntent();
// 根据key取出对应的value值
String account = intent.getStringExtra("account");
String password = intent.getStringExtra("password");
// 把账号和密码展示到控件上
tv_account = findViewById(R.id.tv_account);
tv_password = findViewById(R.id.tv_password);
tv_account.setText("账号:" + account);
tv_password.setText("密码:" + password);
}
}
(5)运行结果
?
?
|