Search code examples
javaandroidandroid-xmlandroid-preferences

Set a preferences from an activity


I want explain what i need.. I've got a preference.xml in which i have a ListPreference.

<ListPreference 
                android:key="preference_grid"
                android:title="@string/preference_grid"
                android:summary="@string/preference_grid_summary"
                android:entries="@array/preference_grid_entries"
                android:entryValues="@array/preference_grid_values"
                android:defaultValue="preference_grid_none"
                />

Then i've created a dialog with a list of the values:

public void gridOnOff(View view) {
        //Toast.makeText(MainActivity.this, "Grid On/Off", Toast.LENGTH_SHORT).show();

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Grid Options");
        builder.setItems(R.array.preference_grid_entries, gridDialogListener);
        builder.create();
        builder.show();
    }
    private DialogInterface.OnClickListener gridDialogListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which) {
                case 0:
                    break;
                case 1:

                    break;
                case 2:

                    break;
            }
        }
    };

I can show the list of values but i don't know how set the values on click.. is it possible? Thanks


Solution

  • Change your onClickListener like this

    public void onClick(DialogInterface dialog, int which) {
        PreferenceManager.getDefaultSharedPreferences(MainActivity.this).edit().putString("preference_grid", 
            getResources().getStringArray(R.array.preference_grid_values)[which]).apply();
    }