Android-скручиватель, действующий странно, вращается

У меня есть крушение с различными Спиннерами в нем. Чтобы эти прядильщики отображали начальное (не выбираемое) значение, я использую настраиваемый arrayAdapter (SpinnerHintAdapter). Единственное, что делает этот класс, это переопределить getCount(), поэтому последний элемент массива выбора не отображается, здесь хранится начальное значение.
Все это прекрасно работает, пока вы не вращаете устройство, поэтому по умолчанию они вращаются по последнему нормальному значению списка, хотя класс Fragment по-прежнему считает, что он установлен на начальном значении.
Кто-нибудь подскажет, почему это происходит и/или как решить эту проблему?

Примеры кода:
фрагмент:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_free_top_up, container, false);
    Spinner pet = (Spinner) rootView.findViewById(R.id.pet);
    SpinnerHintAdapter<CharSequence> petAdapter = SpinnerHintAdapter.createFromResource(getActivity(),
        R.array.pet_array, android.R.layout.simple_spinner_item);
    petAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    pet.setAdapter(petAdapter);
    pet.setSelection(pet.getCount());
    return rootView;
}

SpinnerHintAdapter:

@Override
public int getCount() {
    int count = super.getCount();
    // The last item will be the hint.
    return count > 0 ? count - 1 : count;
}

example string-array

<string-array name="pet_array">
    <item>Yes</item>
    <item>No</item>
    <item>(initial value)</item>
</string-array>

Ответ 1

Не нашел ответа на эту конкретную проблему, но использовал другой метод для отображения начального значения, которое можно найти здесь: fooobar.com/questions/15547/...

Любые разъяснения относительно того, что пошло не так с моей первой попыткой, по-прежнему приветствуются.

Ответ 2

При повороте устройства активность будет воссоздана. Вам нужно переопределить функцию onSavedInstanceState, сохранить ваши данные в Bundle, а затем снова использовать эти данные в onCreate.

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    //save your data
}

а затем используйте это в своем onCreate, чтобы восстановить свой счетчик.