-1

我正在 Android 上制作一个包含 2 个游戏的应用程序。我已经这样做了,但是我遇到了一个问题,即应该延伸到不同的两个按钮GameViews正在延伸到相同的GameViews. 这两个类都有不同的名称,我尝试更改一些内容以专门引用 BallGameView 类,但它会导致程序无法编译。我环顾四周,看看是否有任何东西可以GameViews在单个应用程序中扩展到 2 个独立的,但到目前为止还没有遇到任何问题。

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

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;
    }

}

参考Sprite Game

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;
        }

    }
4

2 回答 2

0

也许问题存在是因为你打setContentView()了两次电话。你应该删除错误的。

于 2015-05-12T15:57:37.930 回答
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因此它将设置 Activity 以将其用作布局,从而使上述行无用。

于 2015-05-12T16:38:40.013 回答