2015-11-29 88 views
0

我试图设计一个有多种游戏模式的安卓游戏。这些游戏模式由不同的类别表示,并且应该在启动时决定使用哪个类别,其中该类别的默认设置是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

意图用于启动活动,服务或广播。我将假设你的课程是为了活动。在这种情况下,父级级别应该延伸活动

对于您正在尝试做的事情,您可能需要考虑策略模式。看到这里:https://en.wikipedia.org/wiki/Strategy_pattern#Java

+0

我试过之前,但也没有工作。不过,我选择尝试策略模式,这确实非常有用。 我目前唯一困惑的是为什么我的imageViews在执行替代策略时没有找到,但是他们在使用常规策略时。 – Drosoph

+0

你在'onCreate(...)'函数中发出警告吗?您必须扩展活动,否则'onCreate(...)'根本不会执行。也许这就是你叫** findViewById ** s的地方? – Gi0rgi0s