Как можно сделать так, чтобы значения в полях в android приложении не сохранялись после перезахода на экран?

Как можно предотвратить сохранение значений фильтров поиска в Android Studio при переходе между фрагментами, даже если в коде нигде явно не передается состояние фильтров? Вот пример кода меню с фильтрами: 

```
showFiltersBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // Здесь размещен код настройки фильтров
    }
});
```
  • 24 февраля 2024 г. 19:38
Ответы на вопрос 2
Для того чтобы значения в полях не сохранялись после перезахода на экран, можно использовать метод `onSaveInstanceState()` в соответствующей активности или фрагменте и вручную устанавливать значения полей в пустую строку или null. Например:

```java
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    // Устанавливаем значения полей в пустую строку
    editText.setText("");
}
```

Чтобы предотвратить сохранение значений фильтров поиска при переходе между фрагментами, можно использовать метод `onDestroyView()` в фрагменте и сбрасывать значения фильтров при уничтожении визуальных элементов. Например:

```java
@Override
public void onDestroyView() {
    super.onDestroyView();
    // Сбрасываем значения фильтров при уничтожении визуальных элементов
    editText.setText("");
}
```

Таким образом, при каждом переходе на экран или между фрагментами, значения в полях будут сбрасываться и не сохраняться.
Мне помогло такое изменение кода с фильтрами: 
showFiltersBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ArrayList<String> cities = new ArrayList<>();
                try {
                    Pair<ArrayList<String>, Integer> cityListGetResult = objectDataExchange.cityListGet(getContext(), sharedPreferences.getLong("id", 0));
                    if (cityListGetResult.second != null) {
                        toastCreator.createToast(getContext(), getLayoutInflater(), getResources().getStringArray(R.array.errors)[cityListGetResult.second]);
                        return;
                    }
                    else {
                        cities.addAll(cityListGetResult.first);
                    }
                } catch (IOException e) {
                    throw new RuntimeException(e);
                } catch (JSONException e) {
                    throw new RuntimeException(e);
                }
                cities.add(getContext().getString(R.string.ObjectCityFilterEdit));
                ArrayAdapter<String> citiesAdapter = new ArrayAdapter<String>(getContext(), R.layout.city_dropdown_item, cities) {
                    @Override
                    public View getView(int position, View convertView, ViewGroup parent) {

                        View v = super.getView(position, convertView, parent);
                        if (position == getCount()-1) {
                            ((TextView)v.findViewById(android.R.id.text1)).setText("");
                            ((TextView)v.findViewById(android.R.id.text1)).setHint(cities.get(getCount()-1)); //"Hint to be displayed"
                        }

                        return v;
                    }

                    @Override
                    public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
                        View v = super.getDropDownView(position, convertView, parent);
                        if (position == getCount()-1) {
                            return new View(getContext());
                        }
                        return v;
                    }

                    @Nullable
                    @Override
                    public String getItem(int position) {
                        return position != getCount() - 1 ? super.getItem(position) : "";
                    }

                    @Override
                    public int getCount() {
                        return super.getCount(); // you dont display last item. It is used as hint.
                    }
                };
                filtersCard.setVisibility(View.VISIBLE);
                closeFiltersBtn.setVisibility(View.VISIBLE);
                cityFilterSpinner.setAdapter(citiesAdapter);
                cityFilterSpinner.setSelection(citiesAdapter.getCount()-1);
                addressIndexFilterEdit.setText(null);
                cityFilterSpinner.setSelection(citiesAdapter.getPosition(filters.get("city")));
                addressIndexFilterEdit.setText(filters.get("addressIndex"));
                //mainActivity.getProfileBtn().setVisibility(View.GONE);
                clearFiltersBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        cityFilterSpinner.setSelection(citiesAdapter.getCount());
                        addressIndexFilterEdit.setText(null);
                        filters.replace("addressIndex", getContext().getString(R.string.ObjectCityFilterEdit));
                        filters.replace("city", null);
                    }
                });
                closeFiltersBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        filtersCard.setVisibility(View.GONE);
                        closeFiltersBtn.setVisibility(View.GONE);
                    }
                });
                applyFiltersBtn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        filters.replace("addressIndex", addressIndexFilterEdit.getText().toString());
                        filters.replace("city", cityFilterSpinner.getSelectedItem().toString());
                        cityFilterSpinner.setSelection(citiesAdapter.getCount());
                        addressIndexFilterEdit.setText(null);
                        filtersCard.setVisibility(View.GONE);
                        closeFiltersBtn.setVisibility(View.GONE);
                        ShowObjects(searchPlain.getText().toString(), linear, sharedPreferences, ft);
                        //mainActivity.getProfileBtn().setVisibility(View.VISIBLE);
                    }
                });
            }
        });
Похожие вопросы