MAFActivityState object is an MAF-specific object that provides access to the current Android activity instance.
The framework can provide its feature set even if it does not have full access to the life cycle of the underlying OS objects, such as an activity.
To access the latest activity instance, some methods require MAFActivityState as an input parameter instead of an activity or context object. ActivityState objects must provide access to the actual instance. For example, if you have a MAFTile object reference, call the getActivityState() method to get the relevant ActivityState object.
// MAFCore is the main object to deal with MAF Extensibility // MAFCore should be built before MAF Extensibility features can be used MAFCoreBuilder mafCoreBuilder = new MAFCoreBuilder(this, false); //Registering application Tile Controller Creator mafCoreBuilder.setApplicationUIElementCreator(new MyViewCreator()); … private class MyViewCreator implements MAFApplicationUIElementCreator { @Override public boolean beforeCreateUIElement(MAFActivityState activityState, String uiElementId, String uiElementType, ViewGroup parentView, int availableWidth, int availableHeight, List<MAFParameter> parameters, MAFTile tile) { //If its the UI Element we're interested in take over the creation if ("myUIelementIdFromConfig".equals(uiElementId)) { return true; } //Otherwise use the default behaviour return false; } @Override public View createUIElement(final MAFActivityState activityState, final String uiElementId, String uiElementType, ViewGroup parentView, int availableWidth, int availableHeight, List<MAFParameter> parameters, final MAFTile tile) { //This method will be invoked only for our UI elements (the ones we returned true for on the beforeCreateUIElement method final TextView textView = new TextView(activityState.getActivity()); textView.setText(Long.toString(System.currentTimeMillis())); final List<MAFParameter> actionParamList = new ArrayList<MAFParameter>(); actionParamList.add(new MAFDefaultParameter("targetUIElementId", "myUIelementIdFromConfig")); textView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { tile.getController().performAction(new MAFDefaultAction("uiRefresh", actionParamList), activityState, "onClick", uiElementId, textView, tile); } }); return textView; } @Override public View afterCreateUIElement(View view, MAFActivityState activityState, String uiElementId, String uiElementType, ViewGroup parentView, int availableWidth, int availableHeight, List<MAFParameter> parameters, MAFTile tile) { //We do not need any changes here now, so return the created view as it is return view; } @Override public boolean beforeRefreshUIElement(View view, MAFActivityState activityState, String uiElementId, String uiElementType, ViewGroup parentView, int availableWidth, int availableHeight, List<MAFParameter> parameters, MAFTile tile) { //If its the UI Element we're interested in take over the refresh mechanism if ("myUIelementIdFromConfig".equals(uiElementId)) { return true; } return false; } @Override public void refreshUIElement(View view, MAFActivityState activityState, String uiElementId, String uiElementType, ViewGroup parentView, int availableWidth, int availableHeight, List<MAFParameter> parameters, MAFTile tile) { //This method will be invoked only for our UI elements (the ones we returned true for on the beforeRefreshUIElement method ((TextView)view).setText(Long.toString(System.currentTimeMillis())); } @Override public void afterRefreshUIElement(View view, MAFActivityState activityState, String uiElementId, String uiElementType, ViewGroup parentView, int availableWidth, int availableHeight, List<MAFParameter> parameters, MAFTile tile) { //We do not need any changes here now } }