目录
一.User.java对象页面
- 写入类成员变量,并获得getter()和setter()方法。
private int id; private String intro;
- 让此类实现Parcelable接口,并重写其方法。其中,此处只需改动writeToParcel(Parcel dest, int flags)方法。
@Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(id); //将要传递的变量“写入”; dest.writeString(intro); }
- SkipActivity.java跳转页面
parcelable.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { User user=new User(); user.setId(172402); user.setIntro("天生丽质难自弃"); Intent intent = new Intent(SkipActivity.this,Data.class); intent.putExtra("UserKey",user); startActivity(intent); } });
- Data.java跳转后获得对象的页面
Intent userData =getIntent(); //勿写成new Intent(); User UserKey = userData.getParcelableExtra("UserKey"); String intro = UserKey.getIntro(); int id = UserKey.getId();
二. 原码
1. User.java
package com.example.classtask.skip;
import android.os.Parcel;
import android.os.Parcelable;
public class User implements Parcelable {
private int id;
private String intro;
protected User(Parcel in) {
id = in.readInt();
intro = in.readString();
}
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 int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(intro);
}
}
2. SkipActivity.java
public class SkipActivity extends AppCompatActivity {
private Button parcelable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_skip);
//初始化控件
InitView();
//控件操作
parcelable();
}
private void parcelable() {
parcelable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
User user=new User();
user.setId(172402);
user.setIntro("天生丽质难自弃");
Intent intent = new Intent(SkipActivity.this,Data.class);
intent.putExtra("UserKey",user);
startActivity(intent);
}
});
}
private void InitView() {
parcelable = findViewById(R.id.parcelable);
}
}
3.activity_skip.xml
<Button
android:id="@+id/parcelable"
android:layout_width="@dimen/btn_width"
android:layout_height="@dimen/btn_height"
android:layout_marginLeft="10dp"
android:background="@drawable/btn_backgrund"
android:text="Parcelable"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="15dp" />
4.Data.java
package com.example.classtask.skip;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.widget.Button;
import android.widget.EditText;
import com.example.classtask.R;
public class Data extends AppCompatActivity {
private EditText user_id;
private EditText user_intro;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data);
InitView();
GetData();
}
private void GetData() {
Intent userData =getIntent();
User UserKey = userData.getParcelableExtra("UserKey");
String intro = UserKey.getIntro();
int id = UserKey.getId();
user_id.setText(id + "");
user_intro.setText(intro);
Log.d("", "\nid----" + id + "\nintro----" + intro + "\n");
}
private void InitView() {
user_id = findViewById(R.id.user_id);
user_intro = findViewById(R.id.user_intro);
}
}
5.activity_data.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:orientation="vertical"
android:paddingLeft="20dp">
<TextView
android:id="@+id/user_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="User"
android:textAllCaps="false"
android:textSize="30dp" />
<EditText
android:id="@+id/user_id"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="User_id"
android:textSize="20dp" />
<EditText
android:id="@+id/user_intro"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="user_intro"
android:textSize="20dp" />
</LinearLayout>
</LinearLayout>