das level wird zwar geladen und die geladenen objekte werden im log ausgegeben, aber dann schließt sich die app einfach nur, ohne fehlermeldung.
weis jemand wie das geht?
Mach es anders. Es ist immer schlecht gegen das geplante Design der Anwendung zu arbeiten. Dazu auch die Doku der Activity-Klasse:
An activity is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you in which you can place your UI with setContentView(View).
Starte einfach eine neue Activity wenn du ein neues Level brauchst. Du kannst ja die Content-View als Parameter in den Intent packen wenn ansonsten immer alles gleich ist. per finish kannst du dann der alten sagen sich zu schließen.
Oder verwende Fragmente und wenn du schon dabei bist: achte auf Conventionen.
Level_01 => Level01 wobei das ein denkbar schlechter Name ist. Vllt ergibt der im Kontext Sinn, aber es erinnert doch eher an:
textfeld1
textfeld2
textfeld3
textfeld4
textfeld5
...
textlfeldn
ich versuche jetzt mit setcontentview(new Level02(view)) das level zu ändern, es wird geladen und die updateloop funktioniert richtig, aber der verdammter canvas ist immer null, die ganze zeit. ich hol mir den canvas ganz normal:
Java:
publicvoiddrawGame(){Canvas c =null;try{
c = view.getHolder().lockCanvas();synchronized(view.getHolder()){
view.onDraw(c);}}finally{if(c !=null){
view.getHolder().unlockCanvasAndPost(c);}}}
wenn ich in der activity direkt das level als contentview setze und es dann ins andere level ändere, geht es.
wenn ich nur das main menu als contentview setze und von da aus dann zum level switche, gehts nicht.
im main menu wird nur ein einziges mal der canvas aufgerufen und drauf gemalt, auf die gleiche weise wie in der loop.
Java:
publicvoidsurfaceCreated(SurfaceHolder holder){
buttons.add(newButton("new Game", m){publicvoidonTouchEvent(){
m.context.setContentView(newLevel_01(m.context));}});Canvas c =null;try{
c = holder.lockCanvas();synchronized(holder){onDraw(c);}}finally{if(c !=null){
holder.unlockCanvasAndPost(c);}}}
nach mehr als ner halben stunde rumprobieren hab ich rausgefunden dass der contentview wechsel nicht geht wenn ich die buttons vor dem malen des canvas hinzufüge, absolut keine ahnung wieso. anders kann ichs wohl kaum machen, es wird nur 1 mal gemalt, wenn ich die buttons danach hinzufüge ist natürlich nichts zu sehen.
wenn ich die buttons in der draw methode erstellt funktioniert der erste contentview wechsel, beim zweiten wird dann wieder überhaupt nichts gemalt.
ich bin seit monaten an der verfluchten app dran, ich muss das irgendwie lösen.