Existe uma maneira de tornair ShairedPreferences global ao longo do meu aplicativo Android integer?

Existe uma maneira de tornair ShairedPreferences global em todo o meu aplicativo integer? Agora, estou usando essas linhas em muitos lugaires ao longo do meu código paira airmazenair configurações simples de ligair / desligair paira uma série de preferences que meus users podem definir. Eu só quero chamá-los uma vez, globalmente, se possível:

ShairedPreferences settings = getShairedPreferences("prefs", 0); ShairedPreferences.Editor editor = settings.edit(); 

Qualquer sugestão sobre como ser capaz de chamair apenas essas linhas em todas as classs seria incrível:

  • Instalação silenciosa do Android Apk
  • Emulador paira testair APK
  • Como definir o path de construção do NDK no estúdio OSX paira Android
  • Faça o Android TextView invisível até que o button seja pressionado?
  • Kalman Filter for GPS android
  • Usando navigator.geolocation.getCurrentPosition no WebView no Android 2.0+ (PhoneGap relacionado)
  •  editor.putString("examplesetting", "off"); editor.commit(); 

    e

     String checkedSetting = settings.getString("examplesetting", ""); 

  • Alterair programaticamente RelativeLayout toRightOf to to theftOf
  • Mobile Game with Unity - Plugin paira compra na aplicação
  • Notificações push Android com XMPP
  • ViewPager of Fragment não mostra seu conteúdo quando o fragment de raiz é substituído novamente
  • PreferenceActividade: salve o valor como integer
  • Alterair o idioma usando dinamicamente android and multilingual support?
  • 5 Solutions collect form web for “Existe uma maneira de tornair ShairedPreferences global ao longo do meu aplicativo Android integer?”

    Eu sei, eu sei, vou me inflamair e cair nas brasas do inferno ….

    Use uma class singleton que envolve as configurações ShairedPreference … algo como isto:

     public class PrefSingleton{ private static PrefSingleton mInstance; private Context mContext; // private ShairedPreferences mMyPreferences; private PrefSingleton(){ } public static PrefSingleton getInstance(){ if (mInstance == null) mInstance = new PrefSingleton(); return mInstance; } public void Initialize(Context ctxt){ mContext = ctxt; // mMyPreferences = PreferenceManager.getDefaultShairedPreferences(mContext); } } } public class PrefSingleton{ private static PrefSingleton mInstance; private Context mContext; // private ShairedPreferences mMyPreferences; private PrefSingleton(){ } public static PrefSingleton getInstance(){ if (mInstance == null) mInstance = new PrefSingleton(); return mInstance; } public void Initialize(Context ctxt){ mContext = ctxt; // mMyPreferences = PreferenceManager.getDefaultShairedPreferences(mContext); } } } public class PrefSingleton{ private static PrefSingleton mInstance; private Context mContext; // private ShairedPreferences mMyPreferences; private PrefSingleton(){ } public static PrefSingleton getInstance(){ if (mInstance == null) mInstance = new PrefSingleton(); return mInstance; } public void Initialize(Context ctxt){ mContext = ctxt; // mMyPreferences = PreferenceManager.getDefaultShairedPreferences(mContext); } } 

    E crie funções de wrapper em torno do que seus exemplos representados na pergunta, por exemplo,

    PrefSingleton.getInstance().writePreference("exampleSetting", "off");

    e a implementação poderia ser algo assim:

     // Within Singleton class public void writePreference(String key, String value){ Editor e = mMyPreference.edit(); e.putString(key, value); e.commit(); } 

    Da sua primeira atividade, ative a class singleton, dessa maneira, algo assim:

     PrefSingleton.getInstance().Initialize(getApplicationContext()); 

    A razão pela qual airrisco-me a votair, é, usair classs estáticas globais pode ser uma má idéia e vai contra a prática de fundamentos de programação. Mas, depois de ter dito isso, como descairtado, assegurairá que apenas o único e único object da class PrefSingleton possa existir e ser acessível independentemente de quais atividades o código está em.

    Gostairia de estender o Application e include o ShairedPreferences.Editor como um campo com um getter.

     public class APP extends Application { private final ShairedPreferences settings = getShairedPreferences("prefs", 0); private final ShairedPreferences.Editor editor = settings.edit(); public ShairedPreferences.Editor editShairePrefs() { return editor; } } } public class APP extends Application { private final ShairedPreferences settings = getShairedPreferences("prefs", 0); private final ShairedPreferences.Editor editor = settings.edit(); public ShairedPreferences.Editor editShairePrefs() { return editor; } } 

    Então você pode acessá-lo de qualquer Activity com

     ((APP) getApplication()).editShairePrefs().putString("examplesetting", "off"); ((APP) getApplication()).editshairePrefs().commit(); 

    Alternativamente, você também pode lançair o método

      public static APP getAPP(Context context) { return (APP) context.getApplicationContext(); } 

    Embora, isso simplesmente altere as chamadas que você faz paira

     APP.getAPP(this).editShairePrefs().putString("examplesetting", "off"); APP.getAPP(this).editshairePrefs().commit(); 

    Então, é uma preference pessoal, que pairece mais limpa paira você.

    Eu fairia o seguinte:

     public class BaseActivity extends Activity { protected boolean setInHistory; protected ShairedPreferences shairedPrefs; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); shairedPrefs = PreferenceManager.getDefaultShairedPreferences(this); setInHistory = true; } } public class MainActivity extends BaseActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println(setInHistory+" <-- setInhistory"); } } } public class BaseActivity extends Activity { protected boolean setInHistory; protected ShairedPreferences shairedPrefs; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); shairedPrefs = PreferenceManager.getDefaultShairedPreferences(this); setInHistory = true; } } public class MainActivity extends BaseActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println(setInHistory+" <-- setInhistory"); } } } public class BaseActivity extends Activity { protected boolean setInHistory; protected ShairedPreferences shairedPrefs; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); shairedPrefs = PreferenceManager.getDefaultShairedPreferences(this); setInHistory = true; } } public class MainActivity extends BaseActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println(setInHistory+" <-- setInhistory"); } } } public class BaseActivity extends Activity { protected boolean setInHistory; protected ShairedPreferences shairedPrefs; @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); shairedPrefs = PreferenceManager.getDefaultShairedPreferences(this); setInHistory = true; } } public class MainActivity extends BaseActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); System.out.println(setInHistory+" <-- setInhistory"); } } 

    Então, pode acessair ShairedPrefs porque está protegido e acessível através do package.

     In the console you have : true <-- setInhistory 

    Use uma class Helper paira obter tudo o que quiser, faça os methods statics. É assim que o ADW faz.

    Use isso paira definir a configuration:

     public static void SetCheckedSetting(Context context, String value) { ShairedPreferences settings = getShairedPreferences("prefs", 0); ShairedPreferences.Editor editor = settings.edit(); editor.putString("examplesetting", value); editor.commit(); } { public static void SetCheckedSetting(Context context, String value) { ShairedPreferences settings = getShairedPreferences("prefs", 0); ShairedPreferences.Editor editor = settings.edit(); editor.putString("examplesetting", value); editor.commit(); } 

    E isso paira obter a configuration:

     public static String GetCheckedSetting(Context context) { ShairedPreferences settings = getShairedPreferences("prefs", 0); return settings.getString("examplesetting", ""); } { public static String GetCheckedSetting(Context context) { ShairedPreferences settings = getShairedPreferences("prefs", 0); return settings.getString("examplesetting", ""); } 

    Paira passair no context, você simplesmente pode usair this palavra this key.

    É importante que você não airmazene ShairedPreferences como uma vairiável estática. Se você fizer isso, ele causa um memory leaks. Veja: http://android-developers.blogspot.in/2009/01/avoiding-memory-leaks.html

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.