【Android】9.Activity通过Parcelable方式传递对象
发布日期:2021-05-12 19:47:13 浏览次数:11 分类:精选文章

本文共 2838 字,大约阅读时间需要 9 分钟。

Activity通过Parcelable方式传递对象

1. 下载素材

为了完成本节课的实验,您需要先下载相关的素材。请在AS12071已发布的公众号中回复生成的链接,按照AS12071格式获取完整的代码包和资源文件。

2. 新建AppInfo类

创建一个新的Java类AppInfo,实现Parcelable接口。该类用于存储和传递应用信息,包括应用名称和版本号。该类的结构如下:

public class AppInfo implements Parcelable {    private String name;    private Double version;    public AppInfo() {        // 无参数构造函数,内部初始化    }    public AppInfo(String name, Double version) {        this.name = name;        this.version = version;    }    // ... 其他标准Parcelable方法,包括readFromParcel和writeToParcel}

3. 填写AppInfo类信息

填写AppInfo类中的数据。这一步主要是为AppInfo对象赋予实际的应用信息,例如应用名称和版本号。

AppInfo appInfo = new AppInfo("DM盒子", 2.3);

4. 编写AppInfo类的完整代码

以下是AppInfo类的完整实现:

public class AppInfo implements Parcelable {    private String name;    private Double version;    @Override    public int describeContents() {        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(name);        dest.writeValue(version);    }    protected AppInfo(Parcel in) {        name = in.readString();        version = (Double) in.readValue(Double.class.getClassLoader());    }    public static final Parcelable.Creator
CREATOR = new Parcelable.Creator
() { @Override public AppInfo createFromParcel(Parcel source) { return new AppInfo(source); } @Override public AppInfo[] newArray(int size) { return new AppInfo[size]; } };}

5. 修改MainActivity类

MainActivity中,创建一个intent并附加AppInfo对象进行传递。

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button button = findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(MainActivity.this, SecondActivity.class);                AppInfo appInfo = new AppInfo("DM盒子", 2.3);                intent.putExtra("appInfo", appInfo);                startActivity(intent);            }        });    }}

6. 修改SecondActivity类

SecondActivity中,从intent中获取AppInfo对象并显示相关信息。

public class SecondActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);                Intent intent = getIntent();        AppInfo appInfo = (AppInfo) intent.getParcelableExtra("appInfo");                TextView textView = findViewById(R.id.textView);        String text = String.format("软件名称:%s,软件版本:%.1f", appInfo.getName(), appInfo.getVersion());        textView.setText(text);    }}

7. 效果图

通过以上步骤,您可以成功地将AppInfo对象通过Parcelable机制传递到另一个Activity中,并在目标Activity中正确地读取和显示这些数据。

上一篇:【Android】10.获取Activity的返回参数
下一篇:【Android】8.Activity通过Serializable方式传递对象

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月13日 13时44分24秒