我有一个具有不同级别的游戏,级别之间有很多共享代码。因此,我有包含所有共享代码的 MainActivity,这会为每个级别加载一个 fragment LevelOne,其中包含级别特定的代码。我需要使用 fragment ,因为我还加载其他带有其他 UI 组件的 fragment 。
关卡 fragment 都包含同名的函数,并且每个关卡的代码都是唯一的,例如StartGame() 和 PauseGame(),MainActivity 在必要时调用。如何加载允许我访问这些函数的单个对象,无论它是什么 fragment ?
例如在Python中我会这样做:
// Instantiation
int level_number = 1;
levels = [levelOne, levelTwo]
level = levels[level_number]
// Something happens and I want to start the currently selected level somewhere in MainActivity
level.StartGame()
但是在Java中我不能这样做,因为我必须事先指定对象的类,而我不知道该类,相反我必须在我引用级别的任何地方都具有这些if条件:
// Instantiation
LevelOne levelOne = new LevelOne();
LevelTwo levelTwo = new LevelTwo();
// Something happens and I want to start the currently selected level somewhere in MainActivity
if (level_number == 1) {
levelOne.StartGame();
} elif (level_number == 2) {
levelTwo .StartGame();
}
最佳答案
为什么每个级别都需要另一个类(class)?
Level levelOne = new Level(1);
Level levelTwo = new Level(2);
关于java - Android:与通用功能通信,无论类如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55264583/