обработка общих предпочтений - PullRequest
0 голосов
/ 28 февраля 2012

Я сделал программный код для общего предпочтения в Android. Но меня смущают общие предпочтения. Я обновляю sharedpreference, если он не совпадает с предыдущим, но каждый раз, когда я получаю его значение, я получаю одно и то же значение. Также, пожалуйста, дайте мне знать, как удалить sharedpreference в onDestroy ().

Bundle bundle = this.getIntent().getExtras();
    resid=bundle.getString("locid");

    SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String prefresid = app_preferences.getString("preflocid", null);
     Log.i("pref res id is",""+prefresid);
    if(prefresid!=null)
    {
        if(resid.equalsIgnoreCase(prefresid))
        {
                Log.i("preference res id is the same","");
        }
        else
        {

            SharedPreferences.Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
            Log.i("preference res id is not same","creating new");
            //SharedPreferences settings = getSharedPreferences("myfile", 0);
           //   SharedPreferences.Editor editor = settings.edit();
             e.putString("preflocid",resid);
             e.commit();
        }
    }
    else
    {
          Log.i("new preference res id created",""+prefresid);
          SharedPreferences.Editor editor = app_preferences.edit();
          editor.putString("preflocid", resid);
          editor.commit();
          Log.i("new preference res id created","");
    }

Ответы [ 3 ]

6 голосов
/ 28 февраля 2012

Проверьте этот блог, он может вам помочь.

http://saigeethamn.blogspot.in/2009/10/shared-preferences-android-developer.html

1 голос
/ 28 февраля 2012

То, что вы делаете в своем коде, изменит значение предпочтения только один раз, а именно при первом чтении.В первый раз это значение NULL, что означает, что вы переходите в else и сохраняете «locid» в «preflocid».В следующий раз, когда для "locid" будет задано значение, и вы перейдете в if, а затем в первый if, потому что "locid" .equalsIgnoreCase (prefresid).

Чтобы удалить предпочтения в onDestroy, просто вызовите это:

@Override
protected void onDestroy() {
  SharedPreferences.Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
  e.clear();
  e.commit();
}
0 голосов
/ 28 февраля 2012

Имеет только один объект по умолчанию SharedPreference и имеет редактор, например:

SharedPreferences s_pref= PreferenceManager.getDefaultSharedPreferences(context);
Editor edit=s_pref.edit();

теперь вам придется использовать этот редактор напрямую, где бы он ни требовался.

...