2016-09-24 2 views
0

Also habe ich 2 Staaten: eine menu-state und eine play-state. Wenn ich in der play-state bin und auf den Android back-button klicke, wird die App beendet. Aber ich möchte die back-button mich stattdessen zu menu state zurückdrehen.Wie richte ich den Android Back-Button (Java) ein?

Wie stelle ich das ein? OnBackPressed funktioniert nicht, weil ich kein Activity habe.

Stattdessen habe ich versucht, es so in den play-state einzurichten:

@Override 
public void handleInput() { 
     if (Gdx.input.isKeyPressed(Input.Keys.BACK)){ 
      gsm.set(new MenuState(gsm)); 
     } 
} 

Es ist ein bisschen arbeiten, aber nicht die Art und Weise, dass ich es will. Also wenn ich jetzt auf back-button klicke, dann geht es an die menu-state aber irgendwie loops zwischen Play-State und Menu-State und dann geht die App aus. Aber wenn ich die back-button halte und es nach 3 Sekunden gehen lasse, dann bin ich in der K und es bleibt dort, wie ich es will.

handleInput() wird auch die ganze Zeit aktualisiert.

Ich hoffe du könntest mir helfen, da es mir sehr wichtig ist und ich habe versucht es stundenlang zu reparieren.

Ich werde Fragen schnell beantworten.

Danke.

+1

Könnten Sie vielleicht klarstellen, was Sie meinen, wenn Sie keine Aktivität haben? Welche Art von Android App bauen Sie? – Ewald

+0

Ein Stapel von Staaten bro – Chribo

Antwort

0

Android-Aktivitäten werden im Aktivitätsstapel gespeichert. Wenn Sie eine Aktivität gehen wollen zurück können Sie so etwas wie folgt verwenden:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    finish(); 
} 

Dies wird Ihre aktuelle Tätigkeit beenden und bringt Sie zurück zu Ihrem letzten activiy.

Aber wenn Sie Ihre letzte Aktivität bereits abgeschlossen haben, müssen Sie sie erneut starten. Wich bedeutet, dass Sie es auf diese Weise setzen müssen:

Intent first_intent = new Intent(getApplication(), First_Activity.class); 
      startActivity(first_intent); 
0
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Logic you want here 
     return true; 
    } else { 
     return super.onKeyDown(keyCode, event); 
    } 
} 

Haben Sie versucht, onKeyDown implementieren? Es kann Teil der Oberklasse "Aktivität" sein und Sie haben erwähnt, dass Sie keine Aktivität verwenden - was verwenden Sie?

+0

Ein Stapel von Staaten, und ich habe versucht, öffentliche boolean onKeyDown zu überschreiben und es hat irgendwie nicht funktioniert, ich denke, es ist nur für Aktivitäten verfügbar – Chribo

Verwandte Themen