我有一些問題試圖找出這個問題:我有一組抽象類(練習),它處理單個練習的實例,和一組其他類(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