アプリの起動時にはSpinnerの最初の項目をEditTextに表示したい。
別のActivityを起動して新たに項目を選択した場合は新しい項目をEditTextに表示したい。
でも元のActivityに制御が戻ったときにSpinnerのEditTextやらSpinnerの初期化をやってしまうと、結局Activtyで選択した項目がロストしてしまう。
とりあえずSpinnerのDefaultSelectionの問題はカウンタを使って回避した。リスナーを登録する前にカウンタをゼロクリアすることで対応。コードはこんな感じ。
int chkSpinnerMusic = 0;
private AdapterView.OnItemSelectedListener onMusicItemSelected = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,
View view, int position, long id) {
if( chkSpinnerMusic++ <= 0 ) {
Log.d(DTAG, "onMusicItemSelected Skip 1st default selection.");
return;
}
新しいActivityでの選択が無効になってしまう問題については、OnActivityResultでセットして、OnResumeでフラグをリセットして、フラグが立っている処理を迂回、という感じで対応。