在Android中扩展第二个GameView

时间:2015-05-12 15:34:17

标签: java android android-custom-view setcontentview

我正在Android上创建一个包含2个游戏的应用程序。我已经完成了这个但是我遇到了一个问题,即应该扩展到不同GameViews的两个按钮正在扩展到相同的GameViews。这些类都有不同的名称,我尝试更改一些内容以专门引用BallGameView类,但它会导致程序无法编译。我已经浏览了一下,看看在一个应用程序中是否有任何扩展到2个单独GameViews的内容,但到目前为止还没有发现任何内容。

编辑:为清楚起见,问题是应该打开不同游戏的按钮正在打开同一个游戏。游戏正在编译但不是我想要的。我将发布指代以下不同游戏的代码。

public class BallGameActivity extends Activity {

    GameView GV;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ballgame);
        GV = new GameView(this);
        setContentView(GV);

参考球赛。

public class BallSplash extends Activity implements View.OnClickListener {

Button playBallButton;
Button guideButton;
Intent ballIntent;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ball_splash);

    playBallButton = (Button)findViewById(R.id.startBallGame);
    guideButton = (Button)findViewById(R.id.guideButton);

    playBallButton.setOnClickListener(this);
    guideButton.setOnClickListener(this);

}

public void onClick(View view) {

    switch (view.getId()) {
        case R.id.startBallGame:
            ballIntent = new Intent(this,BallGameActivity.class);
            startActivity(ballIntent);
            break;
        case R.id.guideButton:
            ballIntent = new Intent(this,Guide.class);
            startActivity(ballIntent);
            break;
    }

}

参考精灵游戏

public class Splash extends Activity implements View.OnClickListener {

    Button playButton;
    Button instructionButton;
    Intent intent;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        playButton = (Button)findViewById(R.id.toPlay);
        instructionButton = (Button)findViewById(R.id.toInstructions);

        playButton.setOnClickListener(this);
        instructionButton.setOnClickListener(this);

    }

    public void onClick(View view) {

        switch (view.getId()) {
            case R.id.toPlay:
                intent = new Intent(this,GameActivity.class);
                startActivity(intent);
                break;
            case R.id.toInstructions:
                intent = new Intent(this,InstructionActivity.class);
                startActivity(intent);
                break;
        }

    }

2 个答案:

答案 0 :(得分:0)

可能存在问题因为您拨打setContentView()两次。你应该删除错误的。

答案 1 :(得分:0)

正确的方法是调用您要用作视图的类

BallGameView GV = new BallGameView(this); 
setContentView(GV);

在您当前的代码中,您正在实例化GameView,但这不是您想要的Activity。您需要实例化BallGameView GV。因为你正在使用

GV = new GameView(this);
setContentView();

在这两个活动中,无论你开始哪个活动,你都会看到同样的事情。所以问题从来没有开始活动或扩展任何事情。

此外,您可以删除

setContentView(R.layout.activity_ballgame);

该行将设置Activity以使用该布局。但是,由于您再次调用setContentView()并使用extends SurfaceView类,因此它会将“活动”设置为将其用作布局,从而使上述行无效。