Android 之 使用 Intent 在活动间传递数据
•前言
继上次学习了《通过 Intent 完成点击按钮实现页面跳转》后,我们知道了如何通过 Intent 实现页面跳转;
Intent 除了可以实现页面跳转外,还可以在跳转的时候传递数据;
接下来我们就来看看如何传递;
•准备工作
接着使用上次的活动 MainActivity 和 AnotherActivity;
对布局文件 activity_another.xml 做一些小小的改动;
activity_another.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="This is Another Activity!" android:textSize="20sp" android:textColor="@color/black"/> <TextView android:id="@+id/string" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout>额外添加了一个 TextView 用于接收传递的数据;
•向下一个活动传递数据
使用 Intent 不仅可以启动一个活动,还可以在启动活动的时候传递数据;
接下来我们就看看如何传递;
Intent 中提供了一系列 putExtra() 方法的重载;
该方法可以把我们想要传递的数据暂存在 Intent 中;
通过 Intent 启动了另一个活动后,只需要把这些数据从 Intent 中取出来就可以了;
修改 MainActivity.java 中的代码;
MainActivity.java
public class MainActivity extends AppCompatActivity { ...... @Override protected void onCreate(Bundle savedInstanceState) { ...... mBtn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this,AnotherActivity.class); String data = "我是传递的数据:data"; intent.putExtra("key",data); startActivity(intent); } }); } }通过 Intent 启动 AnotherActivity,并通过 putExtra() 方法传递了一个字符串 data;
putExtra() 接受两个参数:
第一个参数是键 key
- 用于后面从 Intent 中取值
第二个参数是值 data
- 真正要传递的数据
然后,我们在 AnotherActivity 中将该数据取出,并设置到 TextView 上;
AnotherActivity.java
public class AnotherActivity extends AppCompatActivity { private TextView mTvString; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_another); mTvString = findViewById(R.id.string); Intent intent = getIntent(); String data = intent.getStringExtra("key"); mTvString.setText(data); } }首先,通过 getIntent() 方法获取到用于启动 AnotherActivity 的 Intent;
然后调用 getStringExtra() 方法,传入相应的键值,就可以得到传递的数据了;
通过 setText() 方法将其显示在 UI 界面上;
运行效果