java – 在活动之间传递扩展抽象类的对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在活动之间传递扩展抽象类的对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2750字,纯文字阅读大概需要4分钟。
内容图文
我试图通过为我玩的棋盘游戏制作一个帮助程序来学习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 – 在活动之间传递扩展抽象类的对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。