Assigning an Interaction

The SDK automatically assigns an Interaction path to each Android Activity and Fragment. To override the Interaction path that is created automatically, call the mxoAssignAutomaticInteraction Kotlin extension function or the MedalliaMXO.assignAutomaticInteraction Java method with a desired Interaction path, as shown below:

Kotlin
Java
import com.medallia.mxo.mxoAssignAutomaticInteraction import com.medallia.mxo.interactions.MXOInteraction import java.net.URI // Activity example. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView<ActivityGardenBinding>(this, R.layout.activity_garden) mxoAssignAutomaticInteraction { this.view = findViewById(R.id.example_id) interaction = MXOInteraction(URI("/InteractionPath")) } } // Fragment example. override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) mxoAssignAutomaticInteraction { this.view = view interaction = MXOInteraction(URI("/InteractionPath")) } }import com.medallia.mxo.MedalliaMXO; import com.medallia.mxo.interactions.MXOInteraction; import com.medallia.mxo.automatic.MXOAutomaticInteractionAssignment; import java.net.URI; // Activity example. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout linearLayout = findViewById(R.id.example_id); final MXOAutomaticInteractionAssignment mxoAutomaticInteractionAssignment = new MXOAutomaticInteractionAssignment.Builder() .view(linearLayout) .interaction(new MXOInteraction(URI.create("/InteractionPath"))) .build(); MedalliaMXO.assignAutomaticInteraction(mxoAutomaticInteractionAssignment); } // Fragment example. public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); final MXOAutomaticInteractionAssignment mxoAutomaticInteractionAssignment = new MXOAutomaticInteractionAssignment.Builder() .view(view) .interaction(new MXOInteraction(URI.create("/InteractionPath"))) .build(); MedalliaMXO.assignAutomaticInteraction(mxoAutomaticInteractionAssignment); }
Tip: When setting the Interaction path programmatically, ensure the Interaction starts with a / and only contains letters, numbers and/or dashes.

This can be useful in the following cases:

  1. If an activity with the same layout implements generic functionality and is used to represent various Interactions within the same application. For example, you may have a list view, that is reused across the application to display branch locations in one use case and cash point locations in a second use case.

    Kotlin
    Java
    import com.medallia.mxo.assignAutomaticInteraction import com.medallia.mxo.interactions.MXOInteraction import java.net.URI class LocationsList : ListActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val interaction = if (presenterType == CASH_POINT_LOCATION) { "/cashPointList" } else { "/branchList" } getListView().assignAutomaticInteraction(MXOInteraction(URI(interaction))) } }import com.medallia.mxo.MedalliaMXO; import com.medallia.mxo.MXOInteraction; import com.medallia.mxo.automatic.MXOAutomaticInteractionAssignment; import java.net.URI; public class LocationsList extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final MXOAutomaticInteractionAssignment.Builder assignmentBuilder = new MXOAutomaticInteractionAssignment.Builder() .view(getListView()); if (presenterType == CASH_POINT_LOCATION) { assignmentBuilder .interaction(new MXOInteraction(URI.create("/cashPointList"))); } else { assignmentBuilder .interaction(new MXOInteraction(URI.create("/branchList"))); } MedalliaMXO.assignAutomaticInteraction(assignmentBuilder.build()); } }
  2. If a fragment implements generic functionality and may represent various Interactions. For example, in one case it may show a screen containing laptops and, in another, a screen containing cameras.

    Kotlin
    Java
    import com.medallia.mxo.mxoAssignAutomaticInteraction import com.medallia.mxo.interactions.MXOInteraction import java.net.URI fun onCreateView ( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val view: View = inflater.inflate(R.layout.products_tiles_view, container, false) mxoAssignAutomaticInteraction { this.view = view this.interaction = if (category == Product.Category.LAPTOP) { MXOInteraction(URI.create("/laptopsList")) } else if (category == Product.Category.CAMERA) { MXOInteraction(URI.create("/camerasList")) } else { null } } return view }import com.medallia.mxo.MedalliaMXO; import com.medallia.mxo.MXOInteraction; import com.medallia.mxo.automatic.MXOAutomaticInteractionAssignment; import java.net.URI; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.products_tiles_view, container, false); final MXOAutomaticInteractionAssignment.Builder assignmentBuilder = new MXOAutomaticInteractionAssignment.Builder() .view(view); if (category == Product.Category.LAPTOP) { assignmentBuilder .interaction(new MXOInteraction(URI.create("/laptopsList"))); } else if (category == Product.Category.CAMERA) { assignmentBuilder .interaction(new MXOInteraction(URI.create("/camerasList"))); } MedalliaMXO.assignAutomaticInteraction(assignmentBuilder.build()); return view; }
  3. If an Interaction is represented by a custom view.

    Kotlin
    Java
    import com.medallia.mxo.mxoaAsignAutomaticInteraction import com.medallia.mxo.interactions.MXOInteraction import java.net.URI fun showVariants() { if (varientsView == null) { variantsView = inflater.inflate(R.layout.variants_slide, mainPanelView, false) variantsView.mxoAssignAutomaticInteraction(MXOInteraction(URI("/variants"))) } }import com.medallia.mxo.MedalliaMXO; import com.medallia.mxo.MXOInteraction; import com.medallia.mxo.automatic.MXOAutomaticInteractionAssignment; import java.net.URI; void showVariants() { if (variantsView == null) { variantsView = inflater.inflate(R.layout.variants_slide, mainPaneView, false); final MXOAutomaticInteractionAssignment assignment = new MXOAutomaticInteractionAssignment.Builder() .view(variantsView) .interaction(new MXOInteraction(URI.create("/variants"))) .build(); MedalliaMXO.assignAutomaticInteraction(assignment); } }