Domanda

Ho una preferenza utente nella mia app, che viene utilizzato da diverse attività. Vorrei conoscere il modo migliore per utilizzare tali preferenze tra le diverse attività nella mia app.

Ho questa idea di creare un oggetto condiviso preferenza dall'attività principale e da lì intenti invio alle diverse attività di prendere azioni. Sarebbe quel lavoro ...?

O semplicemente continuare ad invocare getsharedpreferences() da ogni attività ..?

Grazie.

È stato utile?

Soluzione

L'invio di preferenze condivise attraverso intenti sembra troppo complicata. Si potrebbe avvolgere le preferenze condivise con qualcosa come il qui sotto e chiamare i metodi direttamente dalle vostre attività:

public class Prefs {
    private static String MY_STRING_PREF = "mystringpref";
    private static String MY_INT_PREF = "myintpref";

    private static SharedPreferences getPrefs(Context context) {
        return context.getSharedPreferences("myprefs", 0);
    }

    public static String getMyStringPref(Context context) {
        return getPrefs(context).getString(MY_STRING_PREF, "default");
    }

    public static int getMyIntPref(Context context) {
        return getPrefs(context).getInt(MY_INT_PREF, 42);
    }

    public static void setMyStringPref(Context context, String value) {
        // perform validation etc..
        getPrefs(context).edit().putString(MY_STRING_PREF, value).commit();
    }

    public static void setMyIntPref(Context context, int value) {
        // perform validation etc..
        getPrefs(context).edit().putInt(MY_INT_PREF, value).commit();
    }
}

Altri suggerimenti

È possibile utilizzare in questo modo e dichiarare stesse variabili con lo stesso nome in tutte le attività in cui si desidera utilizzare.

  public static final String PREFS_NAME = "MyPrefsFile";
  static SharedPreferences settings;
  SharedPreferences.Editor editor;
  int wordCount;

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    settings = getSharedPreferences(PREFS_NAME, 0);
    editor = settings.edit();

    wordCount = settings.getInt("wordCount", 4); 

  }

Ecco inizialmente WordCount darà 4; E quando modificare WordCount e desidera memorizzare di nuovo

  editor.putInt("wordCount", 6);
  editor.commit();

È necessario dichiarare questo stesse variabili in attività in cui si desidera utilizzare le preferenze condivise. E il suo meglio vi invito getSharedPreferences in ogni attività.

Non credo che il passaggio che la preferenza nel lavoro volontà intenti.

È possibile di utilizzo naturalmente preferenze comune nelle applicazioni.

Se si dispone di più di un tipo semplice di stringa o int, è possibile utilizzare un singolo o estende la classe di applicazione che sarà accessibile da tutte le attività della vostra applicazione. => Nessun accesso al disco qui. Semplicemente tenuti in memoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top