我正在尝试通过制作一个辅助程序来学习Android开发,以帮助我玩的棋盘游戏。我遇到了与传递自定义对象之间的活动中回答的情况非常相似的情况。我的情况与此不同的是,涉及的自定义对象都扩展了一个抽象类。
抽象类表示芯片(在游戏中类似于卡片),如下所示:
一个扩展Chip的类的示例:
我选择这种方法是为了只需在需要时调用
抽象类表示芯片(在游戏中类似于卡片),如下所示:
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");
}
}
我选择这种方法是为了只需在需要时调用
new ChipA()
即可创建适当类型的新芯片,而不是使用new Chip(<长列表的描述Chip A的参数>)
。我需要从一个活动传递这些芯片的集合到另一个活动中。我已经通过在全局存储要传递的芯片来解决了我的代码中的这个问题,就像这篇文章中描述的那样,但是该文章建议改用意图附加项执行此类操作。有人能更清楚地解释原因吗?这只是约定吗?如果这只是可读性的问题,这种方法似乎相对紧凑和易读。
从阅读周围的内容,很明显,使用Intent extras在活动之间传递任意类的预期方式是让它们实现Parcelable
。然而,由于我正在处理许多与所涉类的子类,这意味着必须向每个子类添加writeToParcel
和Parcelable.Creator
。(describeContents()
似乎不重要,据我所知,我可以将其实现在基本抽象类中。)我可能在这里有很多子类,这意味着需要添加大量重复的代码。在这种情况下,实现Parcelable
仍然被认为是首选方法吗?我是否缺少一些东西可以帮助我减少冗余代码?如果有可能,我希望保持我的芯片子类相对紧凑。
请温柔点,我对Stack Overflow和Android开发都很陌生。