Спиннер не очищается - PullRequest
       33

Спиннер не очищается

0 голосов
/ 18 ноября 2018

У меня странная ошибка, которую я не уверен, почему это происходит,

У меня есть 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);
    }

1 Ответ

0 голосов
/ 18 ноября 2018

do DefaultLocations.clear() before для цикла внутри метода initSpinner() может не очиститься при добавлении новых значений

...