Intent数据传递实践(Activity A传递数据文本数据给Activity B,B接收数据并界面显示)。

本文章旨在帮助刚接触Android的小白了解Intent数据传递,和实现Activity之间的跳转。

首先,实现跳转我们需要两个Activity和两个xml文件(写布局)

附上Activity生命周期

一、在第一个布局中设置EditView和Button控件,代码如下

<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical">

    <EditText
        android:id="@+id/fs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="请输入文字"
        android:inputType="text"
        android:textSize="36sp"
        android:background="@color/teal_200"
        android:layout_gravity="center"/>

    <Button
        android:id="@+id/btn1"
        android:layout_width="66dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="发送"
        android:background="#FCAF86"/>

</LinearLayout>

PS:控件一定要设置id,便于我们绑定控件。

二、在MainActivity中,进行功能代码的编写。

在全局变量中声明

private Intent intent;
private Button  btn;
private EditText fs;

在onCreate()方法中绑定控件

fs = findViewById(R.id.fs);
test=findViewById(R.id.test);
btn = findViewById(R.id.btn1);

id的作用这时候就体现出来了

为btn按钮设置监听器,设置点击事件。(需要在类名中声明implements View.OnClickListener )

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
......

@Override
protected void onCreate(Bundle savedInstanceState) {
......

btn.setOnClickListener(this);
}

在onClick()中设置跳转意图,注释很详细了

@Override
public void onClick(View v) {
    intent = new Intent(this, SecondActivity.class);//创建一个Intent对象,第一个参数为Content表示当前的Activity对象,第二个参数表示要启动的目标Activity。
    String text1=fs.getText().toString();//获取EditView组件中的数据并转为String类型
    intent.putExtra("text",text1);//设置传递键值对,将数据封装金Intent对象中
    startActivity(intent);//调用Activity的startActivity方法启动目标组件

}

完整代码如下

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private Intent intent;
    private Button  btn;
    private EditText fs;
    private TextView test;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fs = findViewById(R.id.fs);
        test=findViewById(R.id.test);
        btn = findViewById(R.id.btn1);
        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        intent = new Intent(this, SecondActivity.class);
        String text1=fs.getText().toString();
        intent.putExtra("text",text1);
        test.setText(text1);
        startActivity(intent);

    }
}

三、写好第一个Activity和布局文件,接下来写第二个。

在包名处右键新建Activity并命名(生成的Activity会自动在AndroidMainfest.xml清单文件中注册)。我的命名是SecondActivity。在 res/layout/路径下会看到新生成的xml文件。

布局代码直接奉上

<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical">

    <TextView
        android:id="@+id/js"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:textSize="36sp"
        android:background="#9AF19F"
        android:layout_gravity="center"/>

    <Button
        android:id="@+id/btn2"
        android:layout_width="66dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="接收"
        android:background="#FCEC86"/>

</LinearLayout>

四、在SecondActivity中接收数据。onCreate()中代码与上边的类似。主要说一下接收数据的代码。

//获取Intent对象
Intent intent=getIntent();
//获取MainActivity传递的数据
String text=intent.getStringExtra("text");
//设置值
jstext.setText(text);

完整代码:

public class SecondActivity extends AppCompatActivity implements View.OnClickListener {
    private Button btn2;
    private TextView jstext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        btn2 = findViewById(R.id.btn2);
        btn2.setOnClickListener(this);
        jstext=findViewById(R.id.js);

    }

    @Override
    public void onClick(View v) {
        Intent intent=getIntent();
        String text=intent.getStringExtra("text");
        jstext.setText(text);
    }
}

到此,Activity A传递数据文本数据给Activity B,B接收数据并界面显示的功能就实现了。

另外,Activity之间传递数据的方式有很多,bundle等也可以实现此功能,后续会写一篇介绍Intent和bundle的文章,大家持续关注,欢迎各位进行批评指正。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值