从onCreate启动类并从子类中的父类调用方法

时间:2015-11-29 14:42:27

标签: java android

我试图设计一款具有多种游戏模式的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();
    }

}

提前致谢!

1 个答案:

答案 0 :(得分:0)

意图用于启动活动,服务或广播。我将假设你的课程是活动。在这种情况下,类应该扩展活动

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