2016-09-22 3 views
-2

У меня есть два alertDialog с EditText, каждый должен сохранить значение, которое нужно сохранить в sharedPreferences. Но кажется, что вместо того, чтобы хранить их отдельно, он просто заменяет первое входное значение вторым входным значением. Вот мои коды:Как сохранить два значения отдельно в sharedPreferences?

public void IPconfig(){ 

     // some AlertDialog Builder codes 

     sharedPreferences = getSharedPreferences("FirstText", Context.MODE_PRIVATE); 
     editor = sharedPreferences.edit(); 

     builder.setPositiveButton("Submit", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       editor.putString("FirstText", etIP.getText().toString()); 
       editor.apply(); 
      } 
     }); 

     builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       dialogInterface.dismiss(); 
      } 
     }); 

     builder.create().show(); 
    } 

    public void MonitoringIPConfig(){ 

     // some AlertDialog Builder codes 

     sharedPreferences = getSharedPreferences("SecondText", Context.MODE_PRIVATE); 
     editor = sharedPreferences.edit(); 

     builder.setPositiveButton("Submit", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       editor.putString("SecondText", etIP.getText().toString()); 
       editor.apply(); 
      } 
     }); 

     builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       dialogInterface.dismiss(); 
      } 
     }); 

     builder.create().show(); 
    } 
+0

Вы повторно использовать 'AlertDialog.Builder' экземпляр между двумя методами, которые, вероятно, является причиной вашей проблемы. Каждый метод должен создать собственный 'AlertDialog.Builder'. – Egor

ответ

0

Вы должны вызвать commit() иметь какие-либо изменения, которые вы выполняете в редакторе фактически отображаться в SharedPreferences, как следует из разработчиков Android Page. https://developer.android.com/reference/android/content/SharedPreferences.html

Попробуйте следующее:

editor.putString("FirstText", etIP.getText().toString()).commit();

+0

Не похоже, что это проблема, OP вызывает 'apply()' –

+0

Заметил это. Но недавно мой код также не работал, хотя я использовал 'apply()'. Когда я изменил его на 'commit()', он работал очень хорошо. Я даже не знаю, почему. – codemirel

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