アクティビティを作成するときに、スピナーをセットアップし、リスナーと初期値を割り当てます。onItemSelected
アプリケーションの初期化中にコールバックが自動的に呼び出されることを知っています。私が奇妙だと思うのは、これがデバイスを回転させたときに2回発生し、何らかの問題を回避しなければならないという問題を引き起こしていることです。スピナーの初期選択がゼロの場合、これは発生しません。問題を特定することができました。これが、問題を引き起こす最も簡単なアクティビティです。
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/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
これは予想される動作ですか?私は何かが足りないのですか?