本文章旨在帮助刚接触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的文章,大家持续关注,欢迎各位进行批评指正。