У меня странная ошибка, которую я не уверен, почему это происходит,
У меня есть 2 вида деятельности: деятельность A и деятельность B.
Когда приложение запускается, оно инициализирует спиннер один раз. Я иду на второе занятие, а затем возвращаюсь <- </p>
onRestart()
из Деятельности A будет вызван. Моя проблема в том, что, хотя я очищаю свой счетчик и повторно инициализирую его в onRestart()
, он продолжает считывать значения.
Например, если спиннер имеет 1/2, когда вы переходите к упражнению B, а затем обратно к упражнению A, блесна имеет = 1/2/1 / 2.
Я нахожу это странным, потому что, когда я просто устанавливаю адаптер спиннера в ноль и закомментирую свою инициализацию спиннера, когда я возвращаюсь к действию A из действия B, мой спиннер пуст.
вот мой код:
@Override public void onRestart() {
super.onRestart();
Spinner location = findViewById(R.id.spinnerLocation);
location.setAdapter(null);
initSpinner();// if this is commented out spinner is cleared, if not commented the same valus are added again
}
вот код для initSpinner (читает из общих префов), это не проблема
public void initSpinner(){
Spinner location = findViewById(R.id.spinnerLocation);
location.setAdapter(null);
SharedPreferences prefs = this.getSharedPreferences("Locations", Context.MODE_PRIVATE); //preffilename
SharedPreferences.Editor editor = prefs.edit();
editor.putString("1","St. Catharines");
editor.putString("2","Toronto");
editor.putString("3","Niagara Falls");
editor.commit();
int s = prefs.getAll().size();
for(int f=0;f<25;f++) {
if (prefs.getString(String.valueOf(f + 1), null) != null) {
DefaultLocations.add(prefs.getString(String.valueOf(f + 1), null));
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, DefaultLocations);
//set the spinners adapter to the previously created one.
location.setAdapter(adapter);
}