auto-prefs

Preferences field binder for JVM and Android

View the Project on GitHub hendraanggrian/auto-prefs

Travis CI Codecov Maven Central Nexus Snapshot OpenJDK Android SDK

Auto Prefs

Local settings library that runs in plain Java and Android.

@JvmField @BindPreference var name = ""
@JvmField @BindPreference var age = 0
lateinit var saver = bindPreferences()

fun applyChanges(person: Person) {
    name = person.name
    age = person.age
    saver.save()
}

Download

repositories {
    mavenCentral()
}
dependencies {
    implementation "com.hendraanggrian.auto:prefs-jvm:$version" // for plain Java project
    implementation "com.hendraanggrian.auto:prefs-android:$version" // for Android project
    annotationProcessor "com.hendraanggrian.auto:prefs-compiler:$version" // or kapt for Kotlin
}

Usage

JVM

The native preference manager of Java applet is Preferences .

class MyClass {
    @JvmField @BindPreference var name = ""
    @JvmField @BindPreference var age = 0
    lateinit var saver: PreferencesSaver

    init {
      val preferences = Preferences.userNodeForPackage(MyClass::class.java)
      saver = bindPreferences(preferences)
    }

    fun applyChanges(person: Person) {
        name = person.name
        age = person.age
        saver.save()
    }
}

Android

In Android, SharedPreferences can be created from Context or Fragment.

class MyActivity : Activity() {
    @JvmField @BindPreference var name = ""
    @JvmField @BindPreference var age = 0
    lateinit var saver: PreferencesSaver

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        saver = bindPreferences()
    }

    fun applyChanges(person: Person) {
        name = person.name
        age = person.age
        saver.save()
    }
}