Wywołanie Spinner's onItemSelected wywołane dwa razy po obrocie, jeśli wybrano pozycję niezerową

Kiedy tworzę swoją aktywność, ustawiam Spinnera, przypisując mu słuchacza i wartość początkową. Wiem, żeonItemSelected wywołanie zwrotne jest wywoływane automatycznie podczas inicjowania aplikacji. Dziwne jest to, że tak się dziejedwa razy kiedy urządzenie jest obracane, powodując pewne problemy, które będę musiał omijać. To robinie zdarza się, jeśli początkowy wybór tarczy wynosi zero. Udało mi się wyizolować problem, oto najprostsza czynność wywołująca to:

public class MainActivity extends Activity implements OnItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i("Test","Activity onCreate");
    setContentView(R.layout.activity_main);
    ((Spinner)findViewById(R.id.spinner1)).setSelection(2);
    ((Spinner)findViewById(R.id.spinner1)).setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> spin, View selview, int pos, long selId)
{
    Log.i("Test","spin:"+spin+" sel:"+selview+" pos:"+pos+" selId:"+selId);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {}
}

I oto logcat pokazany podczas uruchamiania aplikacji, a następnie urządzenie obróciło się:

    I/Test( 9881): spin:android.widget.Spinner@4052f508 sel:android.widget.TextView@40530b08 pos:2 selId:2
    I/Test( 9881): Activity onCreate
    I/Test( 9881): spin:android.widget.Spinner@40535d80 sel:android.widget.TextView@40538758 pos:2 selId:2
    I/Test( 9881): spin:android.widget.Spinner@40535d80 sel:android.widget.TextView@40538758 pos:2 selId:2

Czy to jest oczekiwane zachowanie? Czy czegoś mi brakuje?

questionAnswers(8)

yourAnswerToTheQuestion