Browse Source

Merge pull request #11796 from RameshRavone/back_event

Handling BackPress event [Android]
Rémi Verschelde 8 years ago
parent
commit
fd8a71397d

+ 12 - 1
platform/android/java/src/org/godotengine/godot/Godot.java

@@ -191,6 +191,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
 		protected void onMainPause() {}
 		protected void onMainPause() {}
 		protected void onMainResume() {}
 		protected void onMainResume() {}
 		protected void onMainDestroy() {}
 		protected void onMainDestroy() {}
+		protected boolean onMainBackPressed() { return false; }
 
 
 		protected void onGLDrawFrame(GL10 gl) {}
 		protected void onGLDrawFrame(GL10 gl) {}
 		protected void onGLSurfaceChanged(GL10 gl, int width, int height) {} // singletons will always miss first onGLSurfaceChanged call
 		protected void onGLSurfaceChanged(GL10 gl, int width, int height) {} // singletons will always miss first onGLSurfaceChanged call
@@ -727,9 +728,19 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
 */
 */
 
 
 	@Override public void onBackPressed() {
 	@Override public void onBackPressed() {
+		boolean shouldQuit = true;
+
+		for(int i=0;i<singleton_count;i++) {
+			if (singletons[i].onMainBackPressed()) {
+				shouldQuit = false;
+			}
+		}
 
 
 		System.out.printf("** BACK REQUEST!\n");
 		System.out.printf("** BACK REQUEST!\n");
-		GodotLib.quit();
+
+		if (shouldQuit) {
+			GodotLib.quit();
+		}
 	}
 	}
 
 
 	public void forceQuit() {
 	public void forceQuit() {

+ 1 - 1
platform/android/java/src/org/godotengine/godot/GodotView.java

@@ -264,7 +264,7 @@ public class GodotView extends GLSurfaceView implements InputDeviceListener {
 	@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
 	@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
 
 
 		if (keyCode == KeyEvent.KEYCODE_BACK) {
 		if (keyCode == KeyEvent.KEYCODE_BACK) {
-			GodotLib.quit();
+			activity.onBackPressed();
 			// press 'back' button should not terminate program
 			// press 'back' button should not terminate program
 			//	normal handle 'back' event in game logic
 			//	normal handle 'back' event in game logic
 			return true;
 			return true;