スピナーコントロールに問題があります。スピナーアイテムを動的に設定しようとしています。最初はスピナーに1つのアイテムがあります。
spinner.setOnItemSelectリスナーを登録しようとすると、すぐにそのonItemSelectedメソッドが呼び出されます。ただし、アクティビティが開始されたらすぐにこのメソッドを呼び出したくありません。
そこで、このために次の条件を設定します。
public class SpinnerActivity extends Activity implements OnItemSelectedListener {
Spinner spinner;
String[] str_arr = {"aaaaaaaa"};
private int mSpinnerCount=0;
private int mSpinnerInitializedCount=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
spinner = (Spinner) findViewById(R.id.spinner1);
spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, str_arr));
spinner.setOnItemSelectedListener(this);
mSpinnerCount=1;
}
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
if (mSpinnerInitializedCount < mSpinnerCount) {
mSpinnerInitializedCount++;
}
else {
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
}
しかし、スピナーでアイテムを選択しようとすると、logcatで次の警告が表示されます。
09-03 13:02:02.528:W / InputManagerService(59):ウィンドウはすでにフォーカスされています。フォーカスゲインは無視されます:com.android.internal.view.IInputMethodClient$Stub$Proxy@450fafb8
スピナーのアイテムが変更されない限り、このメソッドは呼び出されないという考えがあります。
しかし、私はスピナーに1つの価値があるので、どのように焦点を合わせるか、何か考えはありますか?