•准备工作
新建一个项目,选择 Add No Activity;
打开项目后,将项目模式手动改成 Project 模式;
点击 app/src/main/java, 右击->New->Activity->Empty Activity ;
命名为 FirstActivity,并勾选上 Launcher Activity,表明 FirstActivity 为当前 APP 的主活动;
点击 FINISH 完成创建;
FristActivity.java
public class FirstActivity extends AppCompatActivity { private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); btn1 = findViewById(R.id.btn_1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); } }activity_first.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"> <Button android:id="@+id/btn_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="First Activity" /> </RelativeLayout>再新建一个 SecondActivity,步骤同上,不过这个不需要勾选 Launcher Activity。
SecondActivity.java
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } }activity_second.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:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textSize="20sp"/> </RelativeLayout>代码内容都很简单,这里不再赘述;
•向下一个活动传递数据
使用 Intent 不仅可以启动一个活动,还可以在启动活动的时候传递数据;
接下来我们就看看如何传递;
Intent 中提供了一系列 putExtra() 方法的重载;
该方法可以把我们想要传递的数据暂存在 Intent 中;
通过 Intent 启动了另一个活动后,只需要把这些数据从 Intent 中取出来就可以了;
修改 FirstActivity.java 中的代码;
FirstActivity.java
public class FirstActivity extends AppCompatActivity { private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); btn1 = findViewById(R.id.btn_1); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(FirstActivity.this,SecondActivity.class); String data = "向下一个活动传递数据"; intent.putExtra("data",data); startActivity(intent); } }); } }通过 Intent 启动 SecondActivity,并通过 putExtra() 方法传递了一个字符串 data;
putExtra() 接受两个参数:
第一个参数是键
- 用于后面从 Intent 中取值
第二个参数是值
- 真正要传递的数据
然后,我们在 SecondActivity 中将该数据取出,并设置到 TextView 上;
SecondActivity.java
public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Intent intent = getIntent(); String data = intent.getStringExtra("data"); TextView tv = findViewById(R.id.tv); tv.setText(data); } }首先,通过 getIntent() 方法获取到用于启动 SecondActivity 的 Intent;
然后调用 getStringExtra() 方法,传入相应的键值,就可以得到传递的数据了;
通过 setText() 方法将其显示在 UI 界面上;
运行效果