Annotation Events and Notifications

In PSPDFKit for Android, annotation events are accessible through the AnnotationManager interface, which is implemented by the PdfFragment. There, you can find the following listeners for subscription:

Listener Description
OnAnnotationCreationModeChangeListener Listener for annotation creation mode enter/exit.
OnAnnotationCreationModeSettingsChangeListener Listener for annotation creation mode settings changes.
OnAnnotationDeselectedListener Listener for annotation deselection.
OnAnnotationEditingModeChangeListener Listener for annotation editing mode enter/exit.
OnAnnotationSelectedListener Listener for annotation selection.

Most use cases should be covered by these listeners, and they can be used as such:

override fun onCreate(savedInstanceState : Bundle?) {
    super.onCreate(savedInstanceState)

    pdfFragment.addOnAnnotationSelectedListener(object :AnnotationManager.OnAnnotationSelectedListener {
        override fun onPrepareAnnotationSelection(controller: AnnotationSelectionController, annotation: Annotation, annotationCreated: Boolean): Boolean {
            // Returning `false` here would prevent the annotation from being selected.
            return true
        }

        override fun onAnnotationSelected(annotation: Annotation, annotationCreated: Boolean) {
            Log.i(TAG, "The annotation was selected.")
        }
    })

    pdfFragment.addOnAnnotationDeselectedListener { annotation, reselected ->
        Log.i(TAG, "The annotation was deselected.")
    }

    pdfFragment.addOnAnnotationUpdatedListener(object: OnAnnotationUpdatedListener {
        override fun onAnnotationCreated(annotation: Annotation) {
            Log.i(TAG, "The annotation was created.")
        }

        override fun onAnnotationUpdated(annotation: Annotation) {
            Log.i(TAG, "The annotation was updated.")
        }

        override fun onAnnotationRemoved(annotation: Annotation) {
            Log.i(TAG, "The annotation was removed.")
        }
    })

    // This will remove all previously registered listeners. Instead, you could unregister them selectively.
    pdfFragment.clearAnnotationListeners()
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getPdfFragment().addOnAnnotationSelectedListener(new AnnotationManager.OnAnnotationSelectedListener() {
        @Override
        public boolean onPrepareAnnotationSelection(@NonNull AnnotationSelectionController controller, @NonNull Annotation annotation, boolean annotationCreated) {
            // Returning `false` here would prevent the annotation from being selected.
            return true;
        }

        @Override public void onAnnotationSelected(@NonNull Annotation annotation, boolean annotationCreated) {
            Log.i(TAG, "The annotation was selected");
        }
    });

    getPdfFragment().addOnAnnotationDeselectedListener(new AnnotationManager.OnAnnotationDeselectedListener() {
        @Override public void onAnnotationDeselected(@NonNull Annotation annotation, boolean reselected) {
            Log.i(TAG, "The annotation was deselected");
        }
    });

    getPdfFragment().addOnAnnotationUpdatedListener(new AnnotationProvider.OnAnnotationUpdatedListener() {
        @Override
        public void onAnnotationCreated(@NonNull Annotation annotation) {
            Log.i(TAG, "The annotation was created.");
        }

        @Override
        public void onAnnotationUpdated(@NonNull Annotation annotation) {
            Log.i(TAG, "The annotation was updated.");
        }

        @Override
        public void onAnnotationRemoved(@NonNull Annotation annotation) {
            Log.i(TAG, "The annotation was removed.");
        }
    });

    // This will remove all previously registered listeners. Instead, you could unregister them selectively.
    getPdfFragment().clearAnnotationListeners();
}

For more information on editing annotations and reacting to changes, please see our How to Detect Annotation Changes guide.