美文网首页Android
【Android开发】intent.putExtra()方法参数

【Android开发】intent.putExtra()方法参数

作者: SevenST | 来源:发表于2020-07-08 21:42 被阅读0次

    一. putExtra()方法的作用

    1. 先来说下intent的作用,intent是Android程序中各组件之间进行交互的一种重要方式,一般被用来启动活动、启动服务以及发送广播等;intent在启动Activity的时候可以传递数据,比如说给另一个Activity传递数据,那么活动与活动之间是怎样进行数据传递的呢?
    2. 这时候就需要用到putExtra()方法。intent中提供一系列的putExtra()方法的重载,可以把想要传递的数据暂存在intent中,当另一个活动启动后,再把这些数据从intent缓存中取出即可。
    3. putExtra("A", B)方法中,AB为键值对,第一个参数为键名,第二个参数为键对应的值,这个值才是真正要传递的数据。举个栗子:
    String data = "Hello World";
    ...
    intent.putExtra("extra_data", data);
    

    既然数据是传递给另一个Activity的,那另一个Activity怎么获取这个数据(键值对)呢?这个时候就需要用到get×××Extra()方法,那“×××”又是啥意思呢?其实它是数值类型。比如上例中的键值对("extra_data", data),data的类型是String,那么获取这组数据的方法就是getStringExtra()。同理,还有getIntExtra()getBooleanExtra()等方法。

    二. 实战练习

      光说不练假把式,我们学习新知识点的时候都应该多敲代码多练习,以加深记忆!下面我就写一个栗子: (注:环境为Android Studio 4.0
      这个栗子的思路就是在第一个活动(MainActivity)里新建2个文本输入框EditText,然后再新建一个Button,添加点击事件,当点击Button时,MainActivity中的2个TextView中输入的内容同时在第二个活动SecondActivity中的TextView中显示出来。

    1. 新建第一个Activity:MainActivity

      以下是MainActivity的源码:

    public class MainActivity extends AppCompatActivity {
    
        //声明控件对象
        private EditText editText1;
        private EditText editText2;
        private Button button;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //获取控件的对象
            editText1 = findViewById(R.id.edit_1);
            editText2 = findViewById(R.id.edit_2);
            button = findViewById(R.id.button);
    
            //为Button绑定监听器
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //获取文本输入框中的内容
                    String editTextStr1 = editText1.getText().toString();
                    String editTextStr2 = editText2.getText().toString();
                    //创建intent对象,参数分别为上下文、要跳转的Activity类
                    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                    //将要传递的值附加到Intent对象中暂时保存
                    intent.putExtra("extra_data1", editTextStr1);
                    intent.putExtra("extra_data2", editTextStr2);
                    //启动该intent对象,实现Activity跳转
                    startActivity(intent);
                }
            });
        }
    }
    

      MainActivity对应的布局文件为activity_main.xml,使用简单的LinearLayout线性布局,控件排布为从上到下依次为文本输入框、文本输入框、按钮。其源码为:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <EditText
            android:id="@+id/edit_1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <EditText
            android:id="@+id/edit_2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Button"
            android:textAllCaps="false" />
    
    </LinearLayout>
    

    2. 新建第二个Activity:SecondActivity

    public class SecondActivity extends AppCompatActivity {
    
        //声明TextView对象
        private TextView textView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_second);
    
            //获取TextView控件对象
            textView = findViewById(R.id.text_view);
    
            //获取启动该Activity的Intent对象
            Intent intent = getIntent();
    
            //获取Intent中暂存的数据
            String data1 = intent.getStringExtra("extra_data1");
            String data2 = intent.getStringExtra("extra_data2");
    
            //将MainActivity中两个输入框的输入的内容一同在SecondActivity的TextView控件中显示出来
            textView.setText(data1 + " " + data2);
        }
    }
    

      SecondActivity的布局文件activity_second.xml比较简单,就是一个简单的文本显示控件TextView,就不贴代码了。

    三. 运行结果

    • 点击AndroidStudio的run按钮运行程序,程序首先进入MainActivity,在Android模拟器中运行的结果如下图所示:
    • 在两个文本输入框中依次输入“Hello world!”、“Awesome Awesome!”,点击当前UI中的Button按钮,程序跳转到SecondActivity,运行的结果如下图所示:
    • 这样,我们就通过intent.putExtra()方法将一个活动的数据传递到了第二个活动中,并显示出来。
      写在最后:请大神勿喷,这是本人的自学笔记,旨在巩固自学过程中的学习效果,如果能给Android小白带来一点点帮助,就再好不过了

    相关文章

      网友评论

        本文标题:【Android开发】intent.putExtra()方法参数

        本文链接:https://www.haomeiwen.com/subject/ukkccktx.html