Я делаю игру с холстом. Мне нужно сделать это, когда игра выиграла, это изменит активность, но это может быть сделано только в файле 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?
Комментарий, если вам это нужно более подробно.