protected native void nitOnDestroy(int activity);
protected native void nitOnSaveInstanceState(int activity, Bundle savedInstanceState);
protected native void nitOnRestoreInstanceState(int activity, Bundle savedInstanceState);
+ protected native boolean nitOnBackPressed(int activity);
protected native boolean nitOnKeyDown(int activity, int keyCode, KeyEvent event);
protected native boolean nitOnKeyLongPress(int activity, int keyCode, KeyEvent event);
protected native boolean nitOnKeyMultiple(int activity, int keyCode, int count, KeyEvent event);
}
@Override
+ public void onBackPressed() {
+ if (!nitOnBackPressed(nitActivity))
+ super.onBackPressed();
+ }
+
+ @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return nitOnKeyDown(nitActivity, keyCode, event)
|| super.onKeyDown(keyCode, event);
Activity_on_restore_instance_state((Activity)nit_activity, saved_state);
}
+ JNIEXPORT jboolean JNICALL Java_nit_app_NitActivity_nitOnBackPressed
+ (JNIEnv *env, jobject java_activity, jint nit_activity)
+ {
+ return (jboolean)Activity_on_back_pressed((Activity)nit_activity);
+ }
+
JNIEXPORT jboolean JNICALL Java_nit_app_NitActivity_nitOnKeyDown
(JNIEnv *env, jobject java_activity, jint nit_activity, jint keyCode, jobject event)
{
Activity.on_start, Activity.on_restart, Activity.on_stop,
Activity.on_pause, Activity.on_resume,
Activity.on_save_instance_state, Activity.on_restore_instance_state,
+ Activity.on_back_pressed,
Activity.on_key_down, Activity.on_key_long_press,
Activity.on_key_multiple, Activity.on_key_up `{
App_incr_ref(self);
# Notification from Android, the current device configuration has changed
fun on_configuration_changed do end
+ # The back key has been pressed
+ #
+ # Return `true` if the event has been handled.
+ fun on_back_pressed: Bool do return false
+
# A key has been pressed
#
# Return `true` if the event has been handled.
end
end
+redef class Activity
+ redef fun on_back_pressed
+ do
+ var window = app.window
+ if window.enable_back_button then
+ window.on_back_button
+ return true
+ end
+
+ return false
+ end
+end
+
# On Android, a window is implemented with the fragment `native`
redef class Window
redef var native = (new Android_app_Fragment(self)).new_global_ref