mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Resolved Issue #391: Added cancellable Android activityBackPressed event + fixed the names of the other activity events because they were wrong.
This commit is contained in:
@@ -11,14 +11,15 @@ var callbacks = android.app.Application.ActivityLifecycleCallbacks;
|
||||
|
||||
export var mainModule: string;
|
||||
|
||||
export var androidActivityCreatedEvent = "androidActivityCreated";
|
||||
export var androidActivityDestroyedEvent = "androidActivityDestroyed";
|
||||
export var androidActivityStartedEvent = "androidActivityStarted";
|
||||
export var androidActivityPausedEvent = "androidActivityPaused";
|
||||
export var androidActivityResumedEvent = "androidActivityResumed";
|
||||
export var androidActivityStoppedEvent = "androidActivityStopped";
|
||||
export var androidSaveActivityStateEvent = "androidSaveActivityState";
|
||||
export var androidActivityResultEvent = "androidActivityResult";
|
||||
export var androidActivityCreatedEvent = "activityCreated";
|
||||
export var androidActivityDestroyedEvent = "activityDestroyed";
|
||||
export var androidActivityStartedEvent = "activityStarted";
|
||||
export var androidActivityPausedEvent = "activityPaused";
|
||||
export var androidActivityResumedEvent = "activityResumed";
|
||||
export var androidActivityStoppedEvent = "activityStopped";
|
||||
export var androidSaveActivityStateEvent = "saveActivityState";
|
||||
export var androidActivityResultEvent = "activityResult";
|
||||
export var androidActivityBackPressedEvent = "activityBackPressed";
|
||||
|
||||
// We are using the exports object for the common events since we merge the appModule with this module's exports, which is what users will receive when require("application") is called;
|
||||
// TODO: This is kind of hacky and is "pure JS in TypeScript"
|
||||
@@ -163,7 +164,6 @@ class AndroidApplication implements dts.AndroidApplication {
|
||||
public onActivityResumed: (activity: android.app.Activity) => void;
|
||||
public onActivityStopped: (activity: android.app.Activity) => void;
|
||||
public onSaveActivityState: (activity: android.app.Activity, bundle: android.os.Bundle) => void;
|
||||
|
||||
public onActivityResult: (requestCode: number, resultCode: number, data: android.content.Intent) => void;
|
||||
|
||||
private _eventsToken: any;
|
||||
|
||||
20
application/application.d.ts
vendored
20
application/application.d.ts
vendored
@@ -250,6 +250,16 @@ declare module "application" {
|
||||
intent: android.content.Intent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Data for the Android activity back pressed event.
|
||||
*/
|
||||
export interface AndroidActivityBackPressedEventData extends AndroidActivityEventData {
|
||||
/**
|
||||
* In the event handler, set this value to true if you want to cancel the back navigation and do something else instead.
|
||||
*/
|
||||
cancel: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* This event is raised on android application ActivityCreated.
|
||||
*/
|
||||
@@ -290,6 +300,11 @@ declare module "application" {
|
||||
*/
|
||||
export function on(event: "activityResult", callback: (args: AndroidActivityResultEventData) => void, thisArg?: any);
|
||||
|
||||
/**
|
||||
* This event is raised on the back button is pressed in an android application.
|
||||
*/
|
||||
export function on(event: "activityBackPressed", callback: (args: AndroidActivityBackPressedEventData) => void, thisArg?: any);
|
||||
|
||||
/**
|
||||
* String value used when hooking to ActivityCreated event.
|
||||
*/
|
||||
@@ -330,6 +345,11 @@ declare module "application" {
|
||||
*/
|
||||
export var androidActivityResultEvent: string;
|
||||
|
||||
/**
|
||||
* String value used when hooking to ActivityBackPressed event.
|
||||
*/
|
||||
export var androidActivityBackPressedEvent: string;
|
||||
|
||||
/**
|
||||
* The abstraction of an Android-specific application object.
|
||||
*/
|
||||
|
||||
@@ -98,6 +98,10 @@ if (platform.device.os === platform.platformNames.android) {
|
||||
application.on(application.androidSaveActivityStateEvent, function (args: application.AndroidActivityBundleEventData) {
|
||||
console.log("Event: " + args.eventName + ", Activity: " + args.activity + ", Bundle: " + args.bundle);
|
||||
});
|
||||
|
||||
application.on(application.androidActivityBackPressedEvent, function (args: application.AndroidActivityBackPressedEventData) {
|
||||
console.log("Event: " + args.eventName + ", Activity: " + args.activity);
|
||||
});
|
||||
}
|
||||
|
||||
application.start();
|
||||
|
||||
@@ -494,6 +494,19 @@ var NativeActivity = {
|
||||
|
||||
onBackPressed: function () {
|
||||
trace.write("NativeScriptActivity.onBackPressed;", trace.categories.NativeLifecycle);
|
||||
|
||||
var args = <application.AndroidActivityBackPressedEventData>{
|
||||
eventName: application.androidActivityBackPressedEvent,
|
||||
object: application.android,
|
||||
activity: this,
|
||||
cancel: false,
|
||||
};
|
||||
application.notify(args);
|
||||
|
||||
if (args.cancel) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!frameCommon.goBack()) {
|
||||
this.super.onBackPressed();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user