01 – SitumWYF & Fragments (Android only)

Our Quickstart guide shows you how to load Situm WYF in an Android Activity. This is a common escenario, but it is also common to load it in a Fragment. Fortunately, Situm WYF provides the means to do it easily by using the method SitumMapsLibrary.loadInFragment, which accepts an androidx.fragment.app.Fragment where SitumWYF will load.

In this example, we will assume that you will load your Fragment from the MainActivity, but you can do it anywhere else. First, you need to define your MainActivity layout in “res/layout/activity_main.xml”. For instance:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <FrameLayout
        android:id="@+id/my_placeholder" 
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>
</LinearLayout>

Then, in our MainActivity.java, you need to start the Fragment (which will be loaded in the view element previously defined in the activity_main.xml):

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.my_placeholder, new MyFragment());
        ft.commit();

    }

}

Your Fragment will be composed of two elements. The first one will be the layout, created for example in “res/layout/my_fragment.xml”. It can be as simple as:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.basicwyfapp.MyFragment">

    <FrameLayout
        android:id="@+id/maps_library_target"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</RelativeLayout>

The second one will be the Fragment itself, that will load SitumWYF as usual, but using the loadInFragment method (instead of the regular load method). You will also be able to configure the static & dynamic UI settings if you want.

public class MyFragment extends Fragment {

    SitumMapsLibrary mapsLibrary = null;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
        //Create the view using "my_fragment.xml"
        View view = inflater.inflate(R.layout.my_fragment, parent, false);
        return view;
    }

    @Override
    public void onAttach(@NonNull Context context) {
        super.onAttach(context);

        //Create LibrarySettings
        LibrarySettings librarySettings = new LibrarySettings();
        librarySettings.setApiKey("EMAIL", "APIKEY");

        //Configure dynamic UI settings (if you want)
        librarySettings.setMinZoom(15);
        ...


        //Prepares SitumMapsLibrary to load itself on "maps_library_target" view element
        //Note that the second parameter is "this.getActivity()", since it's an androidx.fragment.app.FragmentActivity
        //When called from an Activity, we would pass "this" as a second parameter instead
        mapsLibrary = new SitumMapsLibrary(R.id.maps_library_target, this.getActivity(), librarySettings);

        //Setup listener to configure dynamic UI settings (optional)
        mapsLibrary.setSitumMapsListener(mapsListener);

        //Load WYF in Fragment!
        mapsLibrary.loadInFragment(this);
    }

    private SitumMapsListener mapsListener = new SitumMapsListener() {
        @Override
        public void onSuccess() {
            //Configure dynamic UI settings after SitumWYF view loads correctly
            mapsLibrary.centerBuilding("12485", null);
            mapsLibrary.setFloorsListVisible(true);
            mapsLibrary.setInfoViewVisible(false);
            ...

        }

        @Override
        public void onError(int i) {
            //...
        }
    };
}

And voila! SitumWYF loads in a Fragment now!

Subscribe to our newsletter

BASIC INFORMATION ON DATA PROTECTION

Data controller: SITUM TECHNOLOGIES, S.L.
Contact: Data controller: situm@situm.es
Responsible for protection: dpo@situm.es
Purpose and legal basis: To manage the sending of SITUM newsletters only with consent.
Legitimation: Express consent of the interested party.
Recipients: The data will not be passed on to third parties with the exception of legal obligations.
Retention period: As long as the interested party remains subscribed to the newsletter (a link to unsubscribe will be available in each newsletter sent by Situm).
Rights: The interested party may at any time revoke their consent, as well as exercise their rights of opposition, access, conservation, rectification, limitation, deletion of data and not be subject to a decision based only on automated data processing, by writing to SITUM at the addresses indicated.
Additional Information: You can consult additional and detailed information on Data Protection in our privacy policy.

Please, download your copy here

Thank you for downloading our whitepaper. Please do not hesitate to contact us if you would like to know more about how our solutions can help your business. Download whitepaper


Close window