我有一些问题试图找出这个问题:我有一组抽象类(练习),它处理单个练习的实例,和一组其他类(Traning类)的实例包含具体练习。从类属性的Android设置
我的应用程序选择一个随机的培训课程,然后运行一个随机的练习。从设置,我希望能够选择例如培训班和行使从随机选择使用哪个
这里是我的代码
/** Common interface for all exercises */
public interface Exercise {
public Exercise run();
}
public abstract class ExerciseClass implements Exercise {
private int mWaitingTime = 3; //seconds to wait before answer is shown
private String mQuestion = "";
private String mAnswer = "";
private String mHint = "";
/*Getters and setters follow*/
}
这是特定培训班的例子,在演习中加入
public class MatheMagic extends TrainingClass {
public MatheMagic() {
class TwoDigitsX11 extends ExerciseClass {
public ExerciseClass run() {
String[] aRes = new String[3];
/*Choose a two digit number*/
int aRand = RandInt(100,11);
String aQuestion = aRand + " x 11";
String aAnswer = String.valueOf(aRand * 11);
String aHint = "To multiply by 11, take the first digit and the last digit, and put in the middle the sum of the two. I.E. 36 x 11 = 3 (3+6) 6 -> 396";
this.setQuestion(aQuestion);
this.setAnswer(aAnswer);
this.setHint(aHint);
return this;
}
}
//Set specific waiting times
TwoDigitsX11 aTwoDigitsX11 = new TwoDigitsX11();
aTwoDigitsX11.setWaitingTime(5);
//Add exercises to training class
mExerciseTypes.add(aTwoDigitsX11);
//these are other examples of exercises, whose code I’ve now not included
mExerciseTypes.add(aMultiplicationTables);
mExerciseTypes.add(new SquareTwoDigitsEndingFive());
}
}
现在,在我的主要活动,我有:
private ArrayList<TrainingClass> mTrainingClasses ;
mMathMag = new MatheMagic();
mMnemonics = new Mnemonics();
mTrainingClasses = new ArrayList<TrainingClass>();
mTrainingClasses.add(mMathMag);
mTrainingClasses.add(mMnemonics);
然后,如我说,我有一个函数runRandomExercise,它选择在其内从mTrainingClasses从ExerciseClass阵列列表中的随机元素,然后随机元素
从我的设置,我希望能够 1)动态改变ArrayList(例如,我想从mMnemonics中选择,但不是mMathMag) 2)从特定的TraningClass中选择从哪个运动中选择。如果设置,例如,mMathMag可以选择运动型TwoDigitsX11 3)变更等待时间的特定运动(访问的功能setWaitingTime())
我的问题是,我不能让一组特定的变量来处理这个问题,因为我希望能够添加或删除特定的培训类和练习,所以理想情况下应用应该能够从设置页面访问mTrainingClasses元素并处理它。
这怎么办? 谢谢!
大卫,你到底心里有当你说“设置页面”?您是否希望将此设置作为持久性应用程序数据并按照用户的偏好进行访问? – quinestor
这将是主意,是 – DavidTonarini
希望它是你问的 – quinestor