目录
- 一:Activity概述
- 二:Activity创建
- 三:Activity之间的跳转
- 1.Activity的数据单向传递
- 2.Activity的数据双向传递
一:Activity概述
众所周知,在Android程序开发中,一个Activity类就对应一个用户界面,每一个用户界面都有自己的一个布局文件。而一个安卓程序正是由很多的Activity页面组成。现在我们就来谈一谈怎么创建一个Activity页面和这些页面之间怎么传输数据。
二:Activity创建
1. 创建新的类继承自Activity类
import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.view.View;
import android.widget.EditText;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class NewActivity extends AppCompatActivity {
private EditText etName;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
}
}
2.为该Activity类绑定布局文件(xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是新的activity界面"
android:textColor="#000021"/>
</LinearLayout>
3.在AndroidManifest.xml文件中注册该Activity
<activity android:name=".NewActivity">
<!-- 配置当前activity作为程序的主界面 -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
三:Activity之间的跳转
在Android中,Activity与Activity之间的跳转是借助Intent对象来实现的。
1.Activity的数据单向传递
1.Activity之间传递简单数据类型
发送端:
//进行Activity的跳转
//创建intent对象
Intent intent=new Intent();
//为intent对象设置目的地
intent.setClass(MainActivity.this,NewActivity.class);
//跳转到新的Activity
//跳转时需要携带的数据
intent.putExtra("name",names[position]);
intent.putExtra("phone","123456");
intent.putExtra("email","cnm@123.com");
接收端:
//接收传递过来的数据
Intent request=getIntent();
String name=request.getStringExtra("name");
String phone=request.getStringExtra("phone");
String email=request.getStringExtra("email");
2.将数据封装到bundle中再进行传递
发送端:
//将数据封装到Bundle中再传送到intent
Bundle bundle=new Bundle();
bundle.putString("name",names[position]);
bundle.putString("phone","123456");
bundle.putString("email","123@sss");
intent.putExtra("bundle",bundle);
接收端:
Bundle bundle=request.getBundleExtra("bundle");
String name=bundle.getString("name");
String phone=bundle.getString("phone");
String email=bundle.getString("email");
3.传输复杂的数据类型
javaBean要实现Serializable接口
public class Student implements Serializable {
private String name;
private String phone;
private String email;
public Student() {
}
public Student(String name, String phone, String email) {
this.name = name;
this.phone = phone;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
发送端:
//传输自定义数据类型
Student student=new Student("张三","123","123");
intent.putExtra("stu",student);
startActivity(intent);//不传递数据,并且不需要做出响应
接收端:
//接收相应的数据
Student student= (Student) request.getSerializableExtra("stu");
String name=student.getName();
String phone=student.getPhone();
String email=student.getEmail();
2.Activity的数据双向传递
发送端需要设置请求码:
startActivityForResult(intent,100);
接收端返回数据:
public void onClicked(View v){
//向mainActivity返回数据
Intent response =new Intent();
response.putExtra("name",etName.getText().toString());
//响应
setResult(200,response);
//结束当前的NewActivity
finish();
}
发送方接收返回数据:
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
//requestCode跳转时的请求码
//resultCode返回响应的结果码
//data返回响应的Intent对象
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==100&&resultCode==200){
//获得从NewActivity响应的数据
String name=data.getStringExtra("name");
//修改数据源
names[currentPosition]=name;
//刷新ListView
adapter.notifyDataSetChanged();
}
}