Class ExclusiveActivityHost2D

Class Hierarchy

An Activity Host that displays Activity nodes one at a time.

An Activity Host node defines the rules for when its Activity nodes are active. Kanzi has these Activity Host nodes:

  • Data-Driven Exclusive Activity Host and Exclusive Activity Host nodes can have only one of its child Activity nodes active at a time. When one child Activity node of a Data-Driven Exclusive Activity Host or an Exclusive Activity Host node is active, all other Activity nodes of that Activity Host node are inactive.

For example, you can use a Data-Driven Exclusive Activity Host or an Exclusive Activity Host node to toggle between views in your application.

See DataDrivenExclusiveActivityHost2D and DataDrivenExclusiveActivityHost3D.

  • Parallel Activity Host node can activate more than one of its child Activity nodes at a time.

See ParallelActivityHost2D and ParallelActivityHost3D.

For example, you can use an Exclusive Activity Host node to toggle between views in your application.

You can add Activity nodes to an Activity Host node in real-time. This enables you to use the Kanzi Engine API to generate Activity nodes or to add to the application another application for which the structure of Activity nodes is not known until you run the application. For example, you can use the API to generate a large number of menu pages that you want to show to the user.

The Activity and Activity Host nodes inherit from the ContentLayout class to lay out their content like a Content Layout node. See ContentLayout2D and ContentLayout3D.

See Activity2D and Activity3D.

Controlling Activity nodes in an Exclusive Activity Host node The type of the Activity Host node determines the way you control its child Activity nodes. When you use an Exclusive Activity Host node, you can control its Activity nodes using:

  • Implicit state control. You can enable navigation with keys and touch that implicitly controls which Activity nodes are active and inactive.
  • Explicit state control. To activate an Activity node explicitly, use one of these approaches:
  • Direct value matching. In an Exclusive Activity Host node set the ValueControlledExclusiveActivityHostConcept::ControllerProperty to the property whose value you want to match to activate Activity nodes and in each child Activity node set the unique value of that property. When the value of the ValueControlledExclusiveActivityHostConcept::ControllerProperty matches the value of the property that you set in an Activity node, the Exclusive Activity Host node activates that Activity node.
  • Synchronize the activation of an Activity node with your logic:
  • In an Activity Host node create a DataTrigger.
  • In the DataTrigger add a condition expression which evaluates to true or false, and which uses as input either Properties or a Data Source.
  • Add to the DataTrigger either:
  • An ApplyActivationAction where you set the ApplyActivationAction::ActivationPathProperty to the Activity node that you want to activate.
  • An ApplyPropertyAction where you set the ValueControlledExclusiveActivityHostConcept::ControllerProperty to the controller property that you use to control the activation of Activity nodes in that Exclusive Activity Host node.

The Activity node stays active as long as the condition expression in the DataTrigger evaluates to true. When the condition in the DataTrigger is no longer true, Kanzi reverts the activation. When using this approach, keep in mind that actions of a DataTrigger have higher priority than the actions of any other Trigger. See DataTrigger, ApplyPropertyAction, and ApplyActivationAction.

  • Activate an Activity node with an ActivateActivityMessage:
  • In an Activity Host node create a Trigger.
  • Add to the Trigger an ActivateActivityMessage to activate an Activity node.
  • Add to the Trigger a condition that, when met, sets off the ActivateActivityMessage.

When using this approach, keep in mind that actions of a DataTrigger have higher priority than the actions of any other Trigger. For example, if you use a DataTrigger with an ApplyActivationAction to activate an Activity node and you use any other Trigger to send an ActivateActivityMessage, the effect of the ActivateActivityMessage becomes visible only after Kanzi unapplies the ApplyActivationAction. See Trigger.

Data and logic programming of Activity nodes For each Exclusive Activity Host node you can define properties that are specific to that Exclusive Activity Host node. For example, Exclusive Activity Host node for a music player keeps currently selected player type.

When you create a property for an Exclusive Activity Host node, set the namespace of that property to Activity Property. You can create properties with int, bool, float, and enum data types. If you use code behind for an Exclusive Activity Host, Kanzi adds the properties of that Exclusive Activity Host to the code behind.

The values of these properties implement the state machine and logic of your Kanzi application, which is why Kanzi preserves the values of these properties even when an Exclusive Activity Host is virtual. When Kanzi virtualizes an Exclusive Activity Host, it serializes the properties of that Exclusive Activity Host and when Kanzi devirtualizes that Exclusive Activity Host, it deserializes the state of that Exclusive Activity Host and restores its property values.

Code behind Code behind is a workflow where you associate code with an instance of an Exclusive Activity Host instead of a type. In Kanzi Studio in the Activity Browser window, you can generate a code behind stub for any Exclusive Activity Host node. This stub is associated with that particular Exclusive Activity Host and has access to the properties of that Exclusive Activity Host. In code behind you can write code that you can associate with the view or controller parts of the model-view-controller pattern. For example, you can:

  • Connect to a remote service when the Exclusive Activity Host is instantiated and attached.
  • Install Kanzi command handlers and define their implementations, such as increase the volume when the user presses a button.
  • Implement complex UI interaction, such as drag-and-drop of data between UI elements.

Fallback state When an Exclusive Activity Host is in Fallback state, none of its Activities are instantiated.

You can use Fallback state to implicitly hide Activities in an Exclusive Activity Host. For example, to automatically hide Activities that make an application menu when their Exclusive Activity Host loses focus, use the Fallback state with the FocusScopeType::AutoClosingModal.

You can add Fallback state to an Exclusive Activity Host, like any other Activity, by setting the ExclusiveActivityHostConcept::ExclusiveActivityHostContentProperty. You can control the Fallback state, like any other state of an Exclusive Activity Host, with the ActivateActivityMessage, ApplyActivationAction, or through direct value matching.

Use an Exclusive Activity Host 2D to define the rules when its Activity nodes are active. An Exclusive Activity Host 2D can have only one of its child Activity nodes active at a time

Inherits properties and message types from ExclusiveActivityHost2DMetadata.

Synopsis

Methods
create()

Creates a 2D Exclusive Activity Host node

ExclusiveActivityHost2D.ExclusiveActivityHost2D:create(name)

Creates a 2D Exclusive Activity Host node.

Parameters
name (string)

The name of the node.