Der onItemSelected-Rückruf von Spinner wird nach einer Drehung zweimal aufgerufen, wenn eine Position ungleich Null ausgewählt ist

Wenn ich meine Aktivität erstelle, richte ich einen Spinner ein und weise ihm einen Listener und einen Anfangswert zu. Ich weiß, dass dieonItemSelected Rückruf wird automatisch während der Anwendungsinitialisierung aufgerufen. Was ich merkwürdig finde, ist, dass dies passiertzweimal Wenn das Gerät gedreht wird, entstehen mir einige Probleme, die ich irgendwie umgehen muss. Das machtnicht passiert, wenn die anfängliche Auswahl des Spinners Null ist. Ich konnte das Problem eingrenzen. Hier ist die einfachste Aktivität, die es ausgelöst hat:

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) {}
}

Und hier ist der Logcat, der angezeigt wird, wenn die Anwendung gestartet und dann das Gerät gedreht wird:

    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

Ist das das erwartete Verhalten? Vermisse ich etwas?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage