2010-10-04 2 views
1

Я пытаюсь создать всплывающее диалоговое окно «что нового», когда пользователи обновляют (или, я полагаю, устанавливают) мое приложение. У меня есть следующая логика, чтобы проверить, что последняя установленная версия затем сравнивает ее с текущей версией, а затем сохраняет текущую версию как «последнюю» версию (это называется в конце onCreate() моего «первого "Activity):Настройки Android не сохраняются

int lastVersion = getPreferences(MODE_PRIVATE).getInt(LAST_VERSION, 34); 
    try { 
     int currentVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; 

     Log.d(getClass().getSimpleName(), "Old Version = " + lastVersion); 
     Log.d(getClass().getSimpleName(), "New Version = " + currentVersion); 

     if (currentVersion != lastVersion) { 
      // write the current version to the preferences so they won't see the popup again 
      getPreferences(MODE_PRIVATE) 
       .edit() 
       .putInt(LAST_VERSION, lastVersion) 
       .commit(); 

      // tell the user the new thing 
      AlertDialog dia = new AlertDialog.Builder(this) 
       .setTitle(R.string.main_menu_new_title) 
       .setMessage(R.string.main_menu_new_body) 
       .create(); 
      dia.show(); 
     } 
    } catch (NameNotFoundException ex) {}   

проблема заключается в том, что независимо от того, сколько раз я запустить приложение я всегда получаю значение по умолчанию для lastVersion, так всплывающий вСЕГДА происходит. Идеи?

ответ

2

Вы пишете старый номер версии, вернувшись к своим предпочтениям.

Изменение:

getPreferences(MODE_PRIVATE) 
       .edit() 
       .putInt(LAST_VERSION, lastVersion) 
       .commit(); 

к:

getPreferences(MODE_PRIVATE) 
       .edit() 
       .putInt(LAST_VERSION, currentVersion) 
       .commit(); 
+0

О jeeze ... поздно ночью. Благодарю. –

Смежные вопросы