前言
Android跳转Activity学习笔记
跳转Activity是不携带参数
this
:从当前Activity跳转
MainActivity2.class
:跳转到Activity2
1 2 3
| Intent intent = new Intent(this, MainActivity2.class);
startActivity(intent);
|
携带基本数据类型参数
跳转时携带参数
<key>
:跳转时携带的参数名
<value>
:跳转时携带的参数名
1 2 3 4 5
| Intent intent = new Intent(this, MainActivity2.class);
intent.putExtra("<key>", "<value>");
startActivity(intent);
|
接收跳转时携带的参数
- 即便是传递的Bundle对象,也可以直接获取其中携带的参数
0
:默认值
1 2 3 4
| Intent intent = getIntent();
intent.getStringExtra("<key>"); intent.getCharExtra("<key>", '0');
|
携带Bundle对象参数
跳转时携带参数
1 2 3 4 5 6 7 8
| Intent intent = new Intent(this, MainActivity2.class);
Bundle bundle = new Bundle(); bundle.putString("<key>", "<value>");
intent.putExtras(bundle);
startActivity(intent);
|
接收跳转时携带的参数
- 即便是传递的Bundle对象,也可以直接获取其中携带的参数
0
:默认值
1 2 3 4
| Intent intent = getIntent();
intent.getStringExtra("<key>"); intent.getCharExtra("<key>", '0');
|
携带Serializable接口对象参数
- Serializable接口对象携带参数是针对于JVM的,性能低,不推荐在Android中使用,推荐在Java开发时使用
创建一个实体类
- 必须实现Serializable接口才有资格以对象的身份传递参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public class User implements Serializable {
private String username; private String password;
public User() { }
public User(String username, String password) { this.username = username; this.password = password; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
@Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
|
跳转时携带参数
1 2 3 4 5 6 7
| Intent intent = new Intent(this, MainActivity2.class);
User user = new User("username", "password");
intent.putExtra("<key>", user);
startActivity(intent);
|
接收跳转时携带的参数
1
| User user = (User) intent.getSerializableExtra("<key>");
|
携带Parcelable接口对象参数
- Parcelable接口对象传递参数是针对于Android虚拟机的,所以推荐使用这种方式传递参数
创建一个实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| public class User implements Parcelable {
private String username; private String password;
protected User(Parcel in) { username = in.readString(); password = in.readString(); }
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(username); dest.writeString(password); }
@Override public int describeContents() { return 0; }
public static final Creator<User> CREATOR = new Creator<User>() { @Override public User createFromParcel(Parcel in) { return new User(in); }
@Override public User[] newArray(int size) { return new User[size]; } };
public User() { }
public User(String username, String password) { this.username = username; this.password = password; }
public String getUsername() { return username; }
public void setUsername(String username) { this.username = username; }
public String getPassword() { return password; }
public void setPassword(String password) { this.password = password; }
@Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
|
跳转时携带参数
1 2 3 4 5 6 7
| Intent intent = new Intent(this, MainActivity2.class);
User user = new User("username", "password");
intent.putExtra("<key>", user);
startActivity(intent);
|
接收跳转时携带的参数
1
| User user = intent.getParcelableExtra("<key>");
|
完成
参考文献
哔哩哔哩——Android架构解析