Android 之 使用 Intent 在活动间传递数据

 

•准备工作

  新建一个项目,选择 Add No Activity;

  打开项目后,将项目模式手动改成 Project 模式;

  点击 app/src/main/java, 右击->New->Activity->Empty Activity ;

Android 之 使用 Intent 在活动间传递数据

  命名为 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 不仅可以启动一个活动,还可以在启动活动的时候传递数据;

  接下来我们就看看如何传递;

Android 之 使用 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 界面上;

运行效果

  Android 之 使用 Intent 在活动间传递数据

 

上一篇:Java后端学Android(4)-活动的启动模式


下一篇:Activity启动模式singleTask模式