title: How to read/write preferences from a DialogFragment?
body: <p>I want to read from a preferences file in a DialogFragment. If I do this:</p>
  
  <pre><code>prefs = getSharedPreferences("numberPicker.preferences", 0);
  </code></pre>
  
  <p>then I get a compile time error, because getSharedReference is a ContextWrapper method but DialogFragment isn't a ContextWrapper (I use android.support.v4.app.DialogFragment for backwards compatibility by the way).</p>
  
  <p>If alternatively, as a 'workaround', I use a SharedPreferences object prefs created in a class InitSpel (which is a FragmentActivity and therefore IS a ContextWrapper) then I get no error (nor at compile time nor at runtime) however the values are not stored (next time I start the app the values baan1 and baan2 are still 0).</p>
  
  <p>How to solve?</p>
  
  <pre><code>package mypackage;
  
  import android.app.Activity;
  import android.app.AlertDialog;
  import android.app.Dialog;
  import android.content.ComponentName;
  import android.content.DialogInterface;
  import android.content.SharedPreferences;
  import android.os.Bundle;
  import android.support.v4.app.DialogFragment;
  import android.support.v4.app.FragmentActivity;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.widget.EditText;
  
  public class VraagBanenDialogFragment extends DialogFragment {
  
      private View v;
      private EditText editText1; 
      private EditText editText2; 
      //private ArrayList&lt;Baan&gt; baanNummers;
      private int[] oldBanen;
      private int[] currentBanen;
      private SharedPreferences prefs;
  
      /*  public VraagBanenDialogFragment(ArrayList&lt;Baan&gt; baanNummers) {
          this.baanNummers = baanNummers;
      }
  */
      @Override
      public Dialog onCreateDialog(Bundle savedInstanceState) {
          AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
          // Restore preferences
          //prefs = InitSpel.prefs;
          prefs = getSharedPreferences("numberPicker.preferences", 0);
          int baan1 = prefs.getInt( "BAAN_01", 0 );
          int baan2 = prefs.getInt( "BAAN_02", 0 );
          //oldBanen = new int[InitSpel.aantalParallel];
          oldBanen = new int[2]; 
          oldBanen[0] = baan1;
          oldBanen[1] = baan2;
  
          // Get the layout inflater
          LayoutInflater inflater = getActivity().getLayoutInflater();
  
          // Inflate and set the layout for the dialog
          // Pass null as the parent view because its going in the dialog layout
          v = inflater.inflate(R.layout.vraag_banen, null);
          // velden vullen met opgeslagen waarden
          editText1 = (EditText) v.findViewById(R.id.editText1); 
          editText2 = (EditText) v.findViewById(R.id.editText2); 
          editText1.setText(String.valueOf(baan1));
          editText2.setText(String.valueOf(baan2));
          //editText1.setText(String.valueOf(baanNummers.get(0).getBaanNummer()));
          //editText2.setText(String.valueOf(baanNummers.get(1).getBaanNummer()));
          builder.setView(v)
          // Add action buttons
          .setPositiveButton(R.string.dialog_ok, new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int id) {
  
                 int baan1 = Integer.valueOf(editText1.getText().toString());
                 int baan2 = Integer.valueOf(editText2.getText().toString());
                 InitSpel.setBaanNummer(0, baan1);
                 InitSpel.setBaanNummer(1, baan2);
  
                 // en banen nog bij de preferences op schijf opslaan...
                 // We need an Editor object (prefs.edit()) to make preference changes.
                 // All objects are from android.context.Context
                 prefs.edit().putInt("BAAN_01", baan1);
                 prefs.edit().putInt("BAAN_02", baan2);
  
                 // Commit the edits!
                 prefs.edit().commit();
              }
          })
          .setNegativeButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int id) {
                 // TODO cancel;
              }
          });      
          return builder.create();
      }   
   }
  </code></pre>