java– 在活动之间传递扩展抽象类的对象

java– 在活动之间传递扩展抽象类的对象,第1张

概述我试图通过为我玩的棋盘游戏制作一个帮助程序来学习Android开发.我遇到了与Passcustomobjectbetweenactivities中回答的情况非常相似的情况.我的情况不同之处在于所讨论的自定义对象都在扩展抽象类.抽象类代表一个芯片(与智能卡游戏相媲美),如下:importjava.util.ArrayList;

我试图通过为我玩的棋盘游戏制作一个帮助程序来学习Android开发.我遇到了与Pass custom object between activities中回答的情况非常相似的情况.我的情况不同之处在于所讨论的自定义对象都在扩展抽象类.

抽象类代表一个芯片(与智能卡游戏相媲美),如下:

import java.util.ArrayList;public abstract class Chip{    protected String name;    protected int imageID;    protected ArrayList<String> chipcolors;    protected ArrayList<String> chipTypes;    public String toString(){        return name;        }    //Getters    public String getname(){ return name; }    public int getimageID() { return imageID; }    public String getSet() { return set; }    //figure out how I need to deal with colors/types when I get there}

扩展Chip的类的示例:

public class ChipA extends Chip{    public ChipA (){        super();        name = "Chip A";        imageID = R.drawable.chipa;        set = "Basic";        chipTypes = new ArrayList<String>();        chipTypes.add("typeA");        chipcolors = new ArrayList<String>();        chipcolors.add("red");        chipcolors.add("green");    }}

我正在采用这种方法,以便我可以通过调用我需要的新ChipA()来创建适当类型的新芯片,而不是新芯片(<描述芯片A>的长参数列表).我需要将这些芯片的集合从一个活动传递到另一个活动.我已经在我的代码中通过存储我想要传递的Chips来解决这个问题,如this article所述,但文章的结尾建议使用intent extras来代替这种 *** 作.有人可以更清楚地解释原因吗?这只是惯例吗?如果只是一个可读性问题,这种方法似乎相对紧凑和可读.

通过阅读,很明显,使用Intent附加功能在活动之间传递任意类的目的是让它们实现Parcelable.但是,由于我正在使用该类的许多子类,这意味着将writetoParcel和Parcelable.Creator添加到每个子类. (describeContents()似乎并不重要,据我所知,我可以在基本的抽象类中实现它.)我可能会在这里有很多子类,这意味着添加了大量的重复代码.在这种情况下,实现Parcelable仍然被认为是首选方法吗?我错过了一些可以减少冗余代码的东西吗?如果可能的话,我宁愿保持我的芯片子类相当紧凑.

请保持温和,我是Stack Overflow和AndroID开发的新手.

解决方法:

你没有遗漏任何东西,Parcelable是这样做的首选方式.
我同意它会导致一些样板代码,但这是处理这个问题的干净方法.

可以通过扩展Application类来跳过这一点,但这会导致一些复杂的问题:在某些情况下可以删除Application对象,这将导致非常麻烦的错误.以预期的方式处理此方法更容易,并为您正在移动的每个对象创建构造函数(Parcel).

另一点是,单身人士模式本身受到越来越多的批评.我不会详细介绍,这些讨论涵盖了这个主题:
https://softwareengineering.stackexchange.com/questions/40373/so-singletons-are-bad-then-what
 What is so bad about singletons?

更糟糕的是,在AndroID中,你甚至不能依靠真正的单身人士;您没有任何保险,您正在 *** 作的应用程序对象(或您自己创建的Singleton)将在应用程序的生命周期内保持其状态. (随机参考号:http://portabledroid.wordpress.com/2012/05/04/singletons-in-android/)

因此,请不要使用Singleton作为避免编写几个包裹的方法.它会回来后再咬你的屁股.

编辑:这里是一个很好的解释如何重现可怕的应用程序类崩溃:http://www.developerphil.com/dont-store-data-in-the-application-object/

总结

以上是内存溢出为你收集整理的java – 在活动之间传递扩展抽象类的对象全部内容,希望文章能够帮你解决java – 在活动之间传递扩展抽象类的对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存