Configurações   Part of Android Jetpack.

Com as configurações, os usuários podem alterar a funcionalidade e o comportamento de um aplicativo. As configurações podem afetar o comportamento em segundo plano, como a frequência com que o aplicativo sincroniza os dados com a nuvem, ou podem ter um alcance maior, como alterar o conteúdo e a apresentação da interface do usuário.

O método recomendado para integrar as configurações ajustáveis do usuário no seu aplicativo é usar a biblioteca AndroidX Preference. Ela gerencia a interface do usuário e interage com o armazenamento para que você defina somente as configurações individuais que o usuário pode definir. Essa biblioteca tem um tema Material que fornece uma experiência de usuário consistente em todos os dispositivos e versões de SO.

Primeiros passos

Uma Preference é o bloco fundamental da biblioteca Preference. Uma tela de configurações tem uma hierarquia de Preference. É possível definir essa hierarquia como um recurso XML ou criar uma hierarquia no código.

As seções abaixo descrevem como criar uma tela de configurações simples usando a biblioteca AndroidX Preference.

Criar uma hierarquia

O exemplo a seguir mostra uma hierarquia simples definida por meio de XML:

<PreferenceScreen
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <SwitchPreferenceCompat
        app:key="notifications"
        app:title="Enable message notifications"/>

    <Preference
        app:key="feedback"
        app:title="Send feedback"
        app:summary="Report technical issues or suggest new features"/>

</PreferenceScreen>

Essa hierarquia tem duas Preferences individuais: uma SwitchPreferenceCompat, que permite ao usuário ativar ou desativar uma configuração, e uma Preference básica sem widget.

Ao criar uma hierarquia, cada Preference precisa ter uma chave única.

Inflar a hierarquia

Para inflar uma hierarquia a partir de um atributo XML, crie um PreferenceFragmentCompat, modifique onCreatePreferences() e forneça o recurso XML que será inflado, conforme exibido no exemplo abaixo:

Kotlin

class MySettingsFragment : PreferenceFragmentCompat() {
    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        setPreferencesFromResource(R.xml.preferences, rootKey)
    }
}

Java

public class MySettingsFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.preferences, rootKey);
    }
}

Em seguida, você poderá adicionar esse Fragment à Activity, como em qualquer Fragment:

Kotlin

class MySettingsActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        supportFragmentManager
                .beginTransaction()
                .replace(R.id.settings_container, MySettingsFragment())
                .commit()
    }
}

Java

public class MySettingsActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.settings_container, new MySettingsFragment())
                .commit();
    }
}