Skip to content

An Android library to create dialogs with ease and handle user interaction reliably, using fragments and material design.

License

Notifications You must be signed in to change notification settings

eltos/SimpleDialogFragments

Repository files navigation

SimpleDialogFragments

API 14+ Maven Central JitPack Code Climate Rating Github CI License

SimpleDialogFragments Library is a collection of easy to use and extendable DialogFragment's for Android. It is fully compatible with rotation changes and can be implemented with only a few lines of code.

A new approach of result handling ensures data integrity over rotation changes, that many other libraries lack.

🧑‍💻 API ℹ️ Wiki 🚀 Releases
🖼️ Screenshots 📱 Demo 🪙 Donate

Features

  • Common dialogs that can be used with few lines of code
    • Alert dialogs
    • Input and checkbox dialogs with suggestions and validations
    • Filterable single- / multi-choice dialogs
    • Color pickers (palettes and/or HSV)
    • Extensive forms
    • Date and time pickers
    • Pin code dialog
    • Progress dialogs
  • Easy result handling even after rotation changes
  • Persistence on rotation changes
  • Material design
  • Fullscreen dialogs
  • Customizable and extendable dialogs

Usage

Check the release page for the latest and older versions:

In your module level build.gradle when using mavenCentral:

dependencies {
    implementation 'io.github.eltos:simpledialogfragments:3.8.3'
}

or if using JitPack:

dependencies {
    implementation 'com.github.eltos:simpledialogfragments:v3.8.3'
}

Building dialogs

Building dialogs is very easy and short handed:

SimpleDialog.build()
            .title(R.string.hello)
            .msg(R.string.hello_world)
            .show(this);

Check the wiki pages for instructions and examples on how to build the different dialogs available.

Receive Results

Supply a tag when showing the dialog and let the hosting Activity or Fragment implement the SimpleDialog.OnDialogResultListener.
For details, please refere to the wiki pages.

@Override
public boolean onResult(@NonNull String dialogTag, int which, @NonNull Bundle extras) {
    if (YES_NO_DIALOG.equals(dialogTag) && which == BUTTON_POSITIVE){
        // ...
        return true;
    }
    if (LIST_DIALOG.equals(dialogTag) && which == BUTTON_POSITIVE){
        ArrayList<Integer> pos = extras.getIntegerArrayList(SimpleListDialog.SELECTED_POSITIONS);
        // ...
        return true;
    }
    if (REGISTRATION_DIALOG.equals(dialogTag) && which == BUTTON_POSITIVE){
        String username = extras.getString(USERNAME);
        String password = extras.getString(PASSWORD);
        // ...
        return true;
    }
    // ...
    return false;
}

Extensions

Known extensions and projects using this library:

License

Copyright 2017-2022 Philipp Niedermayer (github.com/eltos)

Licensed under the Apache License 2.0

You may only use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software in compliance with the License. For more information visit http://www.apache.org/licenses/LICENSE-2.0
The above copyright notice alongside a copy of the Apache License shall be included in all copies or substantial portions of the Software not only in source code but also in a license listing accessible by the user.