Wiki

Clone wiki

Universi / Activity

Overview

UniversiActivity is extension of framework's Activity and UniversiCompatActivity is extension of AppCompatActivity from the Android Jetpack. Both these activity implementations use UniversiActivityDelegate to provide some basic functionality available for Universi context.

Usage

Base Activity

public abstract class BaseActivity extends UniversiActivity {

    // Below are listed some of methods that are available in context of this activity.

    // FRAGMENTS

    // void setFragmentController(FragmentController);
    // void setFragmentFactory(FragmentFactory);

    // DIALOGS

    // boolean setDialogController(DialogController)
    // void setDialogFactory(DialogFactory)
    // void setDialogXmlFactory(@XmlRes int)
    // boolean showDialogWithId(int, DialogOptions)
    // boolean dismissDialogWithId(int)
    // boolean showXmlDialog(@XmlRes int, DialogOptions)
    // boolean dismissXmlDialog(@XmlRes)

    // PERMISSIONS

    // int checkSelfPermission(String)
    // boolean shouldShowRequestPermissionRationale(String)
    // void supportRequestPermissions(String[], int)

    // NETWORK CONNECTION

    // boolean isActiveNetworkConnected()

    // BASE IMPLEMENTATION

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // Specify default container id for default FragmentController.
        // The view container will be used to host root views of fragments shown via this controller.
        getFragmentController().setViewContainerId(R.id.container);
        super.onCreate(savedInstanceState);
    }

    @Override
    protected void onBindViews() {
        super.onBindViews();
        Butterknife.bind(this)
    }
}

Sample Activity

@ContentView(R.layout.activity_sample)
public final class SampleActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set navigational transition used to finish this activity whenever its
        // finishWithNavigationalTransition() is called.
        setNavigationalTransition(SampleNavigationalTransition.get());

        // Attach fragment factory providing Fragment instances for activity's default FragmentController.
        setFragmentFactory(new SampleFragments());
        // ... show initial fragment
        if (savedInstanceState == null) {
            getFragmentController().newRequest(SampleFragments.SAMPLE).immediate(true).execute();
        }

        // Attach dialog factory providing DialogFragment instances for activity's default DialogController.
        setDialogFactory(new SampleDialogs());
        // ... or
        setDialogXmlFactory(R.xml.sample_dialogs);
    }

    @OnClick(R.id.button)
    public void onButtonClick(@NonNull View button) {
        // ... show sample dialog by its corresponding id specified in R.xml.sample_dialogs Xml file
        // In case of SampleDialogs we would use some constant ID specified in such factory.
        showDialogWithId(R.id.sample_dialog);
        // ... dismiss the dialog later
        dismissDialogWithId(R.id.sample_dialog);
    }

    // ... this activity simply have access to all useful methods provided by UniversiActivity ...
}

Module

Mentioned elements are available in the Activity library module.

Updated