我试图设计一款具有多种游戏模式的Android游戏。这些游戏模式由不同的类表示,使用哪个类应该在启动时决定,defaut表示为A类。更改设置将提示游戏开始使用B类。
问题是,因为这两个类之间存在相当多的共享功能,所以我有一个包含公共功能的超类,因此理论上我可以从子类中调用方法。但是,我无法让它发挥作用。
编辑:我已经弄清楚为什么这些方法不起作用,因为他们一直都这样做,但是因为我现在绕过了父类的onCreate,所以方法中使用的数据没装。愚蠢的错误,修正了。 我仍然无法使用onCreate来决定使用哪个子类。这基本上就是我试图实现这一切的原因(我现在没有将B类显示为无关紧要):
public Class Parent{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.some_layout);
chooseMode();
}
private void chooseMode(){
if (conditionA){
Intent modeA = new Intent(this, A.class);
startActivity(modeA);
}
else{
Intent modeB = new Intent(this, B.class);
startActivity(modeB)
}
}
protected void display_imgView(){
imgView.setVisibility(View.VISIBLE);
}
}
public Class A extends Parent{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.some_layout);
}
public void someMethod(){
super.display_imgView();
}
}
提前致谢!
答案 0 :(得分:0)
意图用于启动活动,服务或广播。我将假设你的课程是活动。在这种情况下,父类应该扩展活动。
对于您要做的事情,您可能需要考虑策略模式。见这里:https://en.wikipedia.org/wiki/Strategy_pattern#Java