2013-08-19 2 views
2

Я делаю игру с холстом. Мне нужно сделать это, когда игра выиграла, это изменит активность, но это может быть сделано только в файле Activity. Итак, моя игра работает так: она начинается в MainActivity.class, затем создает холст и устанавливает его как его вид.Android: Измените активность с SurfaceView

MainAcitivity.java:

public class MainActivity extends Activity { 
private MainGamePanel game; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    // making it full screen 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    // set our MainGamePanel as the View 
    game = new MainGamePanel(this, 1); 
    setContentView(game); 

} 
} 

MainGamePanel.java:

public class MainGamePanel extends SurfaceView implements 
    SurfaceHolder.Callback { 

public MainGamePanel(Context context, int lvl) { 
    super(context); 
    this.context = context; 
    Level = lvl; 
    getHolder().addCallback(this); 
    setFocusable(true); 

    thread = new MainThread(getHolder(), this); 

    ball = new com.csdevelopers.canvas.sprite.Ball(
      BitmapFactory.decodeResource(getResources(), R.drawable.ball), 
      100, 100); 
    if (Level == 1) { 
     lvl1 = new lvl1(context); 
    } 

    public void checkWon1(){ 
    if(lvl1.checkWon(ball)){ 
     // change Activity HERE!!! 
    } 
} 

} 

Таким образом, в общественном ничтожной checkWon1() я не в состоянии изменить активность, потому что цель не может быть вызван из класс без активности. Как я могу вернуться к MainActivity и сказать, чтобы он изменил Activity?

Комментарий, если вам это нужно более подробно.

ответ

1

Вы можете изменить его, как это:

Intent intent = new Intent().setClass(getContext(), ActivityToChange.class); 
((Activity) getContext()).startActivity(intent); 
Смежные вопросы